为什么我的vector无法访问嵌套结构中的变量?

时间:2012-12-01 05:01:03

标签: c++ variables vector struct linked-list

#include<iostream>
#include<vector>
#include<string>
#include<list>
using namespace std;

struct record{
    int id;
    string fName;   
};
struct cells{
    list<record> rec[100];
};
vector<cells> hp(100);

int main()
{
    hp[0].rec[0].front().fName = "jon"; // problem occurs here
    return 0;
}

我有2个结构。第一个结构struct record由2个常规变量组成。在struct 2中,我有一个类型为record的链表,其中包含struct 1中列出的所有变量。为什么当我尝试访问结构中的变量时,使用我的向量,我得到了错误:

"linked list iterator not dereferencable?"

4 个答案:

答案 0 :(得分:0)

发生错误是因为您的所有列表都为空。在空容器上调用front()是违法的。

答案 1 :(得分:0)

如果我做对了,

变化

vector<cells> hp(100);

vector<cells> hp(100, cells{{list<record>(1, record())}});

答案 2 :(得分:0)

这就是你需要的

struct cells
{
    list<record> rec;

    cells():rec(100) {}
};

vector<cells> hp(100);


int main()
{
    hp.front().rec.front().fName = "jon";
    return 0;
}

在你的代码中,如果你有一个100 list的数组,你基本上有100个列表,每个列表都未初始化。您不需要100 list秒。您需要1 list和100 records。我上面已经说明了如何做到这一点。

这编译并且也可以正常工作。

答案 3 :(得分:0)

cells是一个包含100个列表的数组......并且每个列表都是未初始化的。