c++ - 不可能使 <list <list< int* >> 工作

标签 c++ list pointers stl

尽管我花费了不合理的时间,但我还是有很多问题无法解决。我想要一个列表< list< 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,它可以编译,但出现“线程 1:EXC_BAD_ACCESS”错误。希望大家多多指教!

谢谢!

最佳答案

test 是空的,所以 test.begin() 是一个单数迭代器,取消引用它是非法的。它会导致未定义的行为,类似于越界访问数组。

你需要这样做:

test.emplace_back();
it = test.begin();

这将向 test 添加一个新的值初始化元素,因此它将成为一个包含零元素列表的单元素列表。然后 将指向该单个元素。

关于c++ - 不可能使 <list <list< int* >> 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35146150/

相关文章:

c++ - 多线程写入套接字

scala - 获取两个列表的元素总和的最快方法

java - 从 LinkedList (list1) 的实例创建了一个子列表 (list3) ,在子列表上调用了clear() 方法,没想到 list1 也会被更改

c - 在不知道其类型的情况下,释放为指向指针的指针分配的所有空间

在 C 中释放内存时无法理解此错误

C++ 使用 std::list of pointers 重新排序 std::vector 元素

python - 删除水平下划线

c++ - 如何从静态成员函数返回拷贝?

c++ - 从一对迭代器 C++ 创建 STL vector

list - 右对齐后伪