在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>>
我正在尝试扩展经常使用 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>>