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 にリストされているすべての変数が含まれています。ベクターを使用して構造体の変数にアクセスしようとすると、エラーが発生するのはなぜですか。

"linked list iterator not dereferencable?"
4

4 に答える 4

0

すべてのリストがであるため、エラーが発生します。front()空のコンテナを呼び出すことは違法です。

于 2012-12-01T05:04:04.553 に答える
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;
}

コードに 100 個の配列がある場合list、基本的に 100 個のリストがあり、それぞれが初期化されていません。100秒は必要ありませんlistlist1に 100が必要ですrecords。これを行う方法を上に示しました。

これはコンパイルされ、正常に動作します。

于 2012-12-01T05:12:00.140 に答える
0

セルは100個のリストの配列です...そしてそれらのすべてが初期化されていません。

于 2012-12-01T05:12:22.767 に答える