1
#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个结构。第一个结构 structrecord由 2 个常规变量组成。在 struct 2 中,我有一个 type 的链表record,其中包括 struct 1 中列出的所有变量。为什么当我尝试使用我的向量访问 structs 中的变量时,会出现错误:

"linked list iterator not dereferencable?"
4

4 回答 4

0

如果我做对了,

改变

vector<cells> hp(100);

vector<cells> hp(100, cells{{list<record>(1, record())}});
于 2012-12-01T05:11:55.160 回答
0

这就是你需要的

struct cells
{
    list<record> rec;

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

vector<cells> hp(100);


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

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

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

于 2012-12-01T05:12:00.140 回答
0

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

于 2012-12-01T05:12:22.767 回答
0

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

于 2012-12-01T05:04:04.553 回答