存储对列表元素的引用是否安全?

时间:2011-04-13 01:48:44

标签: c++ list stl

只要该元素未从列表中删除,是否可以安全地存储std::list中元素的引用?我在this问题中看到存储列表迭代器是安全的,但直接引用是否相同?

例如

list<int> mylist;
mylist.push_back(3);
int& myint = *mylist.begin();

// modfy mylist

cout << "myint: " << myint << endl;
只要我不将其从列表中删除,

myint总是有效吗?

2 个答案:

答案 0 :(得分:7)

  

只要该元素未从列表中删除,是否可以安全地存储std::list中元素的引用?

是。插入和擦除不会使std::list中的元素的引用或迭代器无效(当然,除去对擦除元素的引用和迭代器不再有效)。

答案 1 :(得分:4)

是的,这很安全。元素不会移动,因此引用只会在与迭代器相同的情况下失效。