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

Is it safe to store a reference to an element of a list?

本文关键字:是否 安全 引用 列表元素 存储      更新时间:2023-10-16

std::list中存储对元素的引用是否安全,只要该元素未从列表中删除?我从这个问题中看到,存储列表迭代器是安全的,但对于直接引用也是如此吗?

例如

list<int> mylist;
mylist.push_back(3);
int& myint = *mylist.begin();
// modfy mylist
cout << "myint: " << myint << endl;

myint总是有效的,只要我不从列表中删除它?

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

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

是的,它是安全的。元素不会移动,所以引用只会在与迭代器相同的情况下失效。