我一直在使用 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/