我有以下代码,其中我定义了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);
}

10-07 11:58