c++ - 如何填充结构 vector

标签 c++ vector struct

我有以下代码,我在其中定义了结构 vector 的 vector

#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 尚未填充大小为零。这就是发生段错误的原因。

三种修复方式:

  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);
    }
    

关于c++ - 如何填充结构 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21241201/

相关文章:

ColdFusion:我需要为深层结构的每个元素使用 structKeyExists 吗?

c++ - 运算符重载内存泄漏

r - 计算 R 中某个值出现的次数

c - 如何为 C 结构体中的 char 指针分配内存?

c++ - 使用新结构的聚合初始化是否有效?

r - 如何使用 R 基于模式匹配创建向量?

c++ - Doxygen 提示采用相同模板但具有不同模板参数的重载函数

c++ - 添加同名方法后继承的模板化方法不可见

c++ - ASM at&t 语法

c++ - 自动和自动&和常量