只要该元素未从列表中删除,是否可以安全地存储std::list
中元素的引用?我在this问题中看到存储列表迭代器是安全的,但直接引用是否相同?
例如
list<int> mylist;
mylist.push_back(3);
int& myint = *mylist.begin();
// modfy mylist
cout << "myint: " << myint << endl;
只要我不将其从列表中删除, myint
总是有效吗?
答案 0 :(得分:7)
只要该元素未从列表中删除,是否可以安全地存储
std::list
中元素的引用?
是。插入和擦除不会使std::list
中的元素的引用或迭代器无效(当然,除去对擦除元素的引用和迭代器不再有效)。
答案 1 :(得分:4)
是的,这很安全。元素不会移动,因此引用只会在与迭代器相同的情况下失效。