我有以下代码,其中我定义了struct向量的向量
#include <vector>
#include <iostream>
using namespace std;
struct node
{
int index;
double value;
};
int main()
{
vector < vector <node> >vett1;
node p;
p.index=5;
p.value=2;
for (int i=0; i<10; i++)
vett1[i].push_back(p);
return 0;
}
我不知道填充它的正确方法。这样,当我运行它时,编译器会给我分段错误错误。
最佳答案
当您访问vett1[i]
时,但vett1
尚未用零填充。这就是为什么发生分段错误错误的原因。
修复它的三种方法:
加
vett1.resize(10);
在
for
循环之前。或定义
vett1
并按如下所示设置其大小:vector <vector <node>> vett1(10);
或者,如果您不知道确切的尺寸,可以执行以下操作:
for (int i=0; i<10; i++)
{
vector<node> temp;
temp.push_back(p);
vett1.push_back(temp);
}