我有以下代码,其中我定义了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;
}
我不知道填写它的正确方法。这样当我运行它时,编译器会给我分段错误错误。
答案 0 :(得分:1)
当您访问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);
}