如何填充结构的向量

Posted

技术标签:

【中文标题】如何填充结构的向量【英文标题】:How to fill a vector of struct 【发布时间】:2014-01-20 18:11:15 【问题描述】:

我有以下代码,其中我定义了一个向量的向量结构

#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】:

当您访问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);
    
    

【讨论】:

如果我不知道向量的确切大小怎么办?我想用与 push_back 方法相同的方式填充它?

以上是关于如何填充结构的向量的主要内容,如果未能解决你的问题,请参考以下文章

如何用两列 C++ 从文本文件中填充向量

如何获取这些数组并使用它们来填充结构的字段?

如何删除向量的指针

如何使用算法填充向量的向量

如何从文件中填充集合向量的向量?

访问列表向量中的结构