#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?"
答案 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个列表的数组......并且每个列表都是未初始化的。