你能否详细解释一下std::vector在C++中的具体应用和优势?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1308个文字,预计阅读时间需要6分钟。
某日二师兄参加XXX科技有限公司的C++工程师开发岗位第23面:面试官:了解vector吗?二师兄:了解。面试官:你知道vector底层是如何实现的吗?二师兄:vector底层使用动态数组实现。
某日二师兄参加XXX科技公司的C++工程师开发岗位第23面:
面试官:
vector了解吗?二师兄:嗯,用过。
面试官:那你知道
vector底层是如何实现的吗?二师兄:
vector底层使用动态数组来存储元素对象,同时使用size和capacity记录当前元素的数量和当前动态数组的容量。如果持续的push_back(emplace_back)元素,当size大于capacity时,需要开辟一块更大的动态数组,并把旧动态数组上的元素搬移到当前动态数组,然后销毁旧的动态数组。面试官:你知道新开辟的动态数组的容量是就数组的多少倍比较合适?
二师兄:这个值在不同的编译器上不是固定的。MSVC 是1.5,而GCC是2。
面试官:有没有什么好的办法提升vector连续插入效率?
二师兄:有的,如果知道数据的大概量,我们可以使用
reserve方法直接为vector扩容这个量级。这样在后续的数据插入时就不会因为频繁的capacity被用尽而导致的多次的数据搬移,从而提升vector插入效率。
本文共计1308个文字,预计阅读时间需要6分钟。
某日二师兄参加XXX科技有限公司的C++工程师开发岗位第23面:面试官:了解vector吗?二师兄:了解。面试官:你知道vector底层是如何实现的吗?二师兄:vector底层使用动态数组实现。
某日二师兄参加XXX科技公司的C++工程师开发岗位第23面:
面试官:
vector了解吗?二师兄:嗯,用过。
面试官:那你知道
vector底层是如何实现的吗?二师兄:
vector底层使用动态数组来存储元素对象,同时使用size和capacity记录当前元素的数量和当前动态数组的容量。如果持续的push_back(emplace_back)元素,当size大于capacity时,需要开辟一块更大的动态数组,并把旧动态数组上的元素搬移到当前动态数组,然后销毁旧的动态数组。面试官:你知道新开辟的动态数组的容量是就数组的多少倍比较合适?
二师兄:这个值在不同的编译器上不是固定的。MSVC 是1.5,而GCC是2。
面试官:有没有什么好的办法提升vector连续插入效率?
二师兄:有的,如果知道数据的大概量,我们可以使用
reserve方法直接为vector扩容这个量级。这样在后续的数据插入时就不会因为频繁的capacity被用尽而导致的多次的数据搬移,从而提升vector插入效率。

