如何填充struct的向量

时间:2014-01-20 18:11:16

标签: c++ vector struct

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

我不知道填写它的正确方法。这样当我运行它时,编译器会给我分段错误错误。

1 个答案:

答案 0 :(得分:1)

当您访问vett1[i]时,vett1尚未填充大小为零。这就是发生分段错误错误的原因。

解决问题的三种方法:

  1. 添加

    vett1.resize(10);
    

    for循环之前。

  2. 或定义vett1并按如下方式设置其大小:

    vector <vector <node>> vett1(10);
    
  3. 如果你不知道预先确切的尺寸,你可以这样做:

    for (int i=0; i<10; i++)
    {
        vector<node> temp;
        temp.push_back(p);
        vett1.push_back(temp);
    }