【发布时间】:2020-04-16 17:53:55
【问题描述】:
我有一个按以下方式构建的向量向量:
std::vector<std::vector<int>> symbols;
我想在结构中插入一些 int。为此,我想检查插入 int 的位置是否合法。我试图让向量以一种动态的方式成长。 为此,我写了如下代码:
void checkIndex(unsigned int i0, unsigned int i1) {
int mult_fac=2;
if(i0>=symbols.capacity()-1){
symbols.reserve((i0+1)*mult_fac);
}
if(i1>=symbols[i0].capacity()-1){
symbols[i0].reserve((i1 + 1)*mult_fac);
}
}
为了验证所有这些是否有效,我写了一个 main:
int main() {
for(;;){
int i=rand()%1000;
int j=rand()%1000;
checkIndex(i,j);
}
return 0;}
但是,输出显示内存访问错误:
“进程结束,退出代码 -1073741819 (0xC0000005)”
我使用的是 Windows 10。 我无法理解如何解决它! 谢谢你帮助我。
【问题讨论】:
-
reserve只分配空间,它不会在向量中创建对象。因此,如果该索引处没有对象,您将无法访问symbols[i0]