在std::pair中使用数组扩展数据量

Using arrays in std::pair to extend the amount of data

我正在尝试扩展经常使用 std::queue 和 std::pair 类型的其他人的代码。对于以下代码,我需要扩展 std::pair.second 中的变量数量,并希望它更灵活地处理数组等变量数量(以备将来修改)。

someClass->myQueue.push(std::pair<T1,uint64_t>(var1, var2));

所以我尝试做类似的事情:

someClass->myQueue.push(std::pair<T1,uint64_t[N]>(var1,{e1,e2,...,eN}));

修改代码中的相关定义等后,出现如下错误和警告,完全看不懂。但是听起来这不是进行此类修改的合适方法。

myArray = myQueue.front().second; 
        ^
error: invalid array assignment
...
someClass->myQueue.push(std::pair<T1,uint64_t[N]>(var1,{e1,e2,...,eN}));
                                                                    ^
warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]

我在网上看到 tuple and recursive usage of std::pair 作为解决方案,但我想对代码进行最小的更改,因为有几个 类 会受此影响。正确的做法是什么?

谢谢

原始 C++ 数组不可复制赋值。那就是你得到的错误。相反,您应该使用 可复制分配的数组类型:std::array。具体在这种情况下:

std::pair<T1, std::array<uint64_t, N>>