C++优化:array, vector, 和 list,选择正确

2020-03-28  本文已影响0人  fck_13

这三个是C++中比较常用的顺序容器,如何选择这三个是一个值得探讨的问题。
关于std::array的介绍,请花两分钟看一下我的另一篇文章C++11:array

三种容器各自的特点:

选择:
(1)如果你的元素个数确定且数量不是很大,应使用std::array,在存取速度和内存占用上,相对静态数组是没有消耗的,且类型安全。
(2)如果你的元素个数不确定,但是元素个数的变化频率比较低,这时候应选择使用std::vector。存取速度上相对与动态数组是没有消耗的。但是(1)一般默认会多两个指针的内存大小,原因是记录当前std::vector的大小之类的状态(2)当元素个数达到std::vector的最大容量时,std::vector会重新分配新的足够的空间来储存数据,并将旧的数据拷贝到新分配的空间中,这两点会带来一定的消耗。
(3)如果你的元素个数不确定,并且元素的个数变化的频率比较高,这时候选择使用std::list
(4)由于std::list不是随机存取的,所以不能使用stl中的std::sort函数。这时候要考虑另外两种容器或者自己写sort函数了。

最后给大家看一下,构造含有两个元素的三种容器的汇编代码:


image.png
上一篇下一篇

猜你喜欢

热点阅读