c++ - 在 std::pair 中使用数组来扩展数据量

标签 c++ c++11 std stdmap std-pair

我正在尝试扩展其他人的代码,这些代码经常使用 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>>

关于c++ - 在 std::pair 中使用数组来扩展数据量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29786095/

相关文章:

c++ - c++中带有 vector 的分层数据结构,可以自下而上和自上而下遍历

用于按需加载元素的容器的 C++ 随机访问迭代器

c++ - Mac 应用程序的文件保存位置

c++ - 在 GCC 4.8 中包含 <random> 是必要的吗?

c++ - 在 windows 中包含 .h 路径,但在 visual studio 中忽略 unix

c++ - DoEvents 等同于 C++?

c++ - 将 C++ 函数指针传递给 Fortran 子例程

c++ - 不确定如何处理析构函数(类中的大型顶点数组用作同一类的其他实例的数据源)

C++ - 如何将 JSON 写回文件

visual-studio - 如何搜索文件以查找整数