简单小结一下各类容器的特点和选用条件。
典型内存结构
单端数组
双端数组
双向链表
二叉树
可随机存储
是
否
对key而言,不是
元素搜索速度
慢
非常慢
快
对key而言,快
元素安插移除
尾端
头尾两端
任何位置
-
vector 可以涵盖其他所有容器的功能,只不过实现特殊功能时效率没有其他容器高。但如果只是简单存储,vector效率是最高的。
deque 相比于 vector 支持头端元素的快速增删。
vector 与 deque 的比较
vector.at()比deque.at()的效率高
vector.at()
deque.at()
比如vector.at(0)是固定的,deque的开始位置是不固定的
vector.at(0)
deque
如果有大量释放操作的话,vector花的时间更少
vector
deque支持头部的快速插入与快速删除,这是deque的优点
list 支持频繁的不确定位置元素的移除插入。
set 会自动排序。
map 是元素为键值对组并按键排序的set。
结合概述一章中的关于容器,容器一章的前述内容以及上述简单小结,相信读者已经对C++STL中的容器有了十分清晰而又详尽的理解。恭喜,小可爱又变强了😄。
最后更新于3年前