存储对列表元素的引用是否安全?
Is it safe to store a reference to an element of a list?
在std::list
中存储对元素的引用是否安全,只要该元素未从列表中删除?我从这个问题中看到,存储列表迭代器是安全的,但对于直接引用也是如此吗?
list<int> mylist;
mylist.push_back(3);
int& myint = *mylist.begin();
// modfy mylist
cout << "myint: " << myint << endl;
将myint
总是有效的,只要我不从列表中删除它?
在
std::list
中存储对元素的引用是否安全,只要该元素未从列表中删除?
是的。插入和擦除不会使对std::list
中元素的引用或迭代器失效(当然,除非对已擦除的元素的引用和迭代器不再有效)。
是的,它是安全的。元素不会移动,所以引用只会在与迭代器相同的情况下失效。
相关文章:
- 通过网络、跨平台传递std::变体是否安全
- 在类型和包装器之间reinterpret_cast是否安全<Type>?
- 跨 DLL 边界访问虚拟方法是否安全/可能?
- 静态 constexpr 类成员变量对多线程读取是否安全?
- 在函数结束后使用指向变量的指针是否安全?
- 逐字节删除 void* 是否安全?
- 在 RAII 构造中修改 RVO 值是否安全?
- 线程调用的函数对对象删除是否安全?
- 将对象的字节复制到数组并再次复制回来是否安全
- 使用枚举为数组编制索引是否安全?
- 返回从字符串文本创建的静态string_view是否安全?
- 在cstlib中将#include_next替换为#include是否安全
- 由并发无序映射查找线程调用的函数是否安全?
- 使用 c++ 原子时编写"y=++x"是否安全?
- 从另一个线程发出信号是否安全?
- 从其存储的回调中删除 std::函数是否安全
- 使用 std::vector::swap 方法在C++中交换两个不同的向量是否安全?
- 当我在C++中调用 struce 的只读静态成员时,线程是否安全
- 同时调用 ASIO 对象的 API 是否安全?
- 使用自己的迭代器分配容器是否安全?