多维矢量总线错误
Multidimensional vector bus error
当我尝试执行以下操作时,我有一个11663 Bus Error
;
std::vector< std::vector<int> > bullets;
std::vector<int> num;
num[0] = 7;
bullets.push_back(num);
我认为这会起作用,因为向量bullets
的类型是一个向量。为什么这不起预期的作用?此外,以下工作;
std::vector< std::vector<int> > bullets;
std::vector<int> num (4, 100);
bullets.push_back(num);
我不知道为什么这是有效的,但我的其他代码不是。
std::vector<int> num;
num[0] = 7;
num
尚未为任何内容分配存储。只有当您知道某个元素存在于索引中时,才使用索引语法[]
。否则,请使用push_back
,如果需要,它会增加vector
的存储容量。第二个例子之所以有效,是因为您使用了为元素保留一定空间的构造函数(在本例中为4,所有元素的值都为100)。
std::vector<int> num;
num.push_back(7);
bullets.push_back(num);
附带说明一下,"这不起作用"并不是一个很有用的问题描述。此外,请注意,如果需要对每个元素进行迭代,那么在性能关键型代码中,将向量中的向量用作矩阵不是一个好主意。
现在不要废弃它,也不要担心它,除非你知道这将是一个问题,但要意识到,使用这种方法会失去数据的局部性,因为每个向量都会单独分配其存储。如果这些数据是在一个紧密的循环中迭代的,那么最好分配一个大向量,并手动计算每个单独位置的偏移量。
num[0] = 7;
应该是
num.push_back(7);
相关文章:
- 总线错误,堆上分配的内存
- 总线错误 10 - 字符 * 数组
- C/C++ 字符串错误与 ARM SEG 故障总线错误
- 获取总线错误:10 并附加字符串
- 多维矢量总线错误
- 链表的总线错误(核心转储)
- C 结构中的总线错误
- 如何解决此总线错误
- 调用虚拟方法导致总线错误
- 尝试打印数组时出现总线错误和奇怪的输出
- 尝试在共享内存中写入时发生总线错误
- C++ 总线错误:尝试解析和更新字符串时出现 10
- 我在以下代码中收到总线错误
- 总线错误:10 还有更多索引要去
- 使用链表的动态队列//总线错误:10(C++)
- 快速修复程序给出的总线错误
- 总线错误10或分段错误11
- C++ 在类成员"无符号长"上使用"^="和"<<"时出现总线错误
- 析构函数中的模拟总线错误
- 试图获取vector迭代器的值时出现总线错误10