c++ - 使用 map<int, Foo> 而不是 vector<Foo> 来避免指针失效

标签 c++ dictionary vector stl containers

假设我有一个类 Foo , 和一个容器 vector<Foo> Foos . 我使用的算法在很大程度上依赖于指向 Foos 元素的指针。 ,我还需要添加 Foo s 动态访问容器的元素。问题是如果我向 vector 添加太多元素,它可能需要重新分配元素,从而使指向这些元素的所有指针无效。那么使用类似 map<int, Foo> 的东西有意义吗?而不是 vector<Foo>

最佳答案

std::deque 具有与 vector 相似的性能(和随机访问),但不会在插入时使指针无效。

不过,它确实会在删除时使指针无效。

关于c++ - 使用 map<int, Foo> 而不是 vector<Foo> 来避免指针失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57245583/

相关文章:

c++ - 通过引用返回通过引用传递的 vector 的实用程序

c++ 由于静态链接而丢失静态函数调用(用于自动工厂注册)

java - 从 Controller 更改组合框值

Python 字典内的列表理解

android - 来自标准 Android 键盘的字典

c++ - 调用对象 vector 的成员函数

c++ - 如何保护进程免受 writeprocessmemory 的影响?

c++ - 调整数组模板

c++ - 在编译时将类隐式转换为整数类型(最好是 bool)

c++ - 错误: glibc detected when using vector