c++ - C++ std::vector 是如何实现的?

标签 c++ stl

我一直在使用 std::vector 很多,最近我问自己这个问题:“std::vector 是如何实现的?”

我有两种选择:

1) 链表,然后让 API 感觉像是随机访问(即重载 operator[])。

2) 使用 new,例如Foo* temp = new Foo[20]:我相信他们会做这样的事情,但随后又提出了一个问题。他们是否总是分配最大 (uint32_t) 存储空间来提供随机访问? (这在内存方面效率低下。)

或者还有什么我应该注意的?

最佳答案

它是通过使用底层数组来实现的。

不可能实现 std::vector<T> 使用链表,因为标准保证列表中的元素将保存在连续的内存中。

关于c++ - C++ std::vector 是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2096571/

相关文章:

c++ - Linux套接字编程测试

c++ - 一个大文件,还是几个小文件?

c++ - 关联容器中的 end() 迭代器

c++ - 如何在 DLL 边界上公开 STL 列表?

C++ vector ; remove_if 只删除一个值?

c++ - 整个范围内的 std::for_each 没有方便的重载吗?

c++ - 使用成员作为参数调用构造函数解析为变量定义

python - 在多线程中调用 Py_Initialize()

c++ - 如何从多个输入中获取某个元素 C++

c++ - 如何正确地将转换构造函数从 std::queue 传递到底层 std::deque?