包含列表的c++映射
c++ map containing a list
我想创建一个映射,其中键是int,值是数组列表(int[][]
)。
我试过这个:
const int R = 4, C = 5;
std::map<int, std::list<int[R][C]> > s;
但它不会编译,我不明白为什么。。。(R和C是程序的参数,但在执行过程中不会改变)。
数组不可复制构造或可复制分配,而标准容器的元素必须是可复制构造和可复制分配的。您的代码将按原样编译,但数组类型违反了标准容器的要求,您将遇到未定义的行为。你不能有std::list<int[R][C]>
。然而,C++11为您提供了一个非常好的新的编译时常数大小的std::array
:
typedef std::array<std::array<int, C>, R> array_2d;
typedef std::list<array_2d> array_list;
std::map<int, array_list> s;
否则,其他选择是使用std::vector
而不是std::array
(首选),或者使用int**
的std::list
并动态分配2D阵列。
不过,我想重新考虑一下你的设计。这真的是你想要的结构吗?是否应将任何数据分组为struct
?
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 将函数类成员映射到类本身内部
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 使用std::函数映射对象方法
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++映射分割错误(核心转储)
- 内联映射初始化的动态atexit析构函数崩溃
- 使用"std::unordereded_map"映射到"std::list"对象
- 如何从多映射中删除特定的重复项
- 在未初始化映射的情况下,将值插入到映射的映射中
- QT通过C++添加映射QML项目
- 在c++中访问int到类对象的映射时出错
- 在C++中搜索嵌套多映射值
- 错误处理.将系统错误代码映射到泛型
- C++匿名结构作为std::映射值
- 如何从存储在std::映射中的std::集中删除元素
- 递归无序映射
- 正在VS调试器中监视映射条目