编译期间矢量下标超出范围

vector subscript out of range during compiling

本文关键字:范围 下标 编译      更新时间:2023-10-16
int i = 0;
int j = 0;
vector<vector<int>> normal;
vector< vector<int> >::iterator row;
vector<int>::iterator col;
for (i = 1; i < 10; i++) {
for (j = 1; j < 10; j++) {
normal[i].push_back(j);
}
}

有人可以解释我做错了什么吗? 在编译过程中,我收到错误"矢量下标超出范围"

在尝试使用normal[i]之前,您永远不会向normal添加任何元素。

你还没有把任何东西放进normal.它作为一个空的载体坐着,直到你把东西放进去。

您可以通过每次迭代为其提供新值来解决此问题

for (i = 0; i < 10; i++) {
normal.push_back(vector<int>());
for (j = 0; j < 10; j++) {
normal[i].push_back(j);
}
}

另外,您的ij正在初始化为1,但我相当确定您的意思是0.我在我的片段中解决了这个问题。

向量法线为空。 您可以按如下方式初始化向量。

vector<vector<int>> normal(10, vector<int>());