c++ - 我可以使用 std::vector::operator[] 返回的引用多长时间?

标签 c++ vector

std::vector::operator[]“返回对 vector 容器中位置 n 处元素的引用。”

我可以永远使用这个引用吗?我可以将它传递给另一个线程并从另一个线程使用吗?是否有可能引用无效(例如,导致 vector 调整大小)并且我在某些时候有“垃圾”而不是真实元素?

最佳答案

几乎 vector 的任何变化都可能导致对元素的引用失效。如果您从不改变 vector ,那么引用将保持有效。

如果您将 vector 视为一个数组,那么这是有道理的,因为您必须移动元素的任何删除都可能意味着您不再指向正确的元素,如果您必须重新分配内存,那么元素也将不再在同一个地方。

关于c++ - 我可以使用 std::vector::operator[] 返回的引用多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31246573/

相关文章:

c++ - OpenCV 断言失败 - convertTo

c++ - 如何在 Windows Mobile 6 上获得 "busy wheel"?

java - 比 o(n) 更快地计算 a^n 的模数

c++ - 测试字节顺序兼容性的工作流程

c++ - 如何在 C++ 中明确数据所有权

c++ - 通过在每个元素上调用 name() 将 Class 的 vector 转换为 decltype(Class::name()) 的 vector

C++ 我在设置我创建的类的优先级队列时遇到问题

C++ 智能指针取消引用 - 检查它是否已初始化的开销是多少?

c++ - 找不到子类的成员

c++ - 查找 vector 的 vector 的最大值/最小值