尽管我花费了不合理的时间,但我仍然无法解决问题。我想要一个清单<列表< int *> >,但它不起作用。这是我的代码:
int main(int argc, const char * argv[]) {
int a=2;
int b=3;
list<list<int*>> test;
list< list<int*> >::iterator it;
it = test.begin();
it->push_back(&a);
it->push_back(&b);
b=4; //should modify the content of "test"
for(list <int*>::iterator it2 = it->begin(); it2 != it->end(); it2++) {
cout << *it2 << endl;
}
}
使用xCode,它编译但我有一个&#34;线程1:EXC_BAD_ACCESS&#34;错误。我希望你能开导我!
谢谢!
答案 0 :(得分:6)
test
为空,因此test.begin()
是一个单数迭代器,取消引用它是非法的。它会导致未定义的行为,类似于访问数组越界的行为。
你需要这样做:
test.emplace_back();
it = test.begin();
这将向test
添加一个新的值初始化元素,因此它将成为包含零元素列表的单元素列表。然后it
将指向该单个元素。