🗒️容器简单小结

简单小结一下各类容器的特点和选用条件。

container 的特点总结

vectordequelistsetmultisetmapmultimap

典型内存结构

单端数组

双端数组

双向链表

二叉树

二叉树

二叉树

二叉树

可随机存储

对key而言,不是

元素搜索速度

非常慢

对key而言,快

对key而言,快

元素安插移除

尾端

头尾两端

任何位置

-

-

-

-

container 的使用场景

vector 可以涵盖其他所有容器的功能,只不过实现特殊功能时效率没有其他容器高。但如果只是简单存储,vector效率是最高的。

deque 相比于 vector 支持头端元素的快速增删。

vector 与 deque 的比较

  • vector.at()deque.at()的效率高

    • 比如vector.at(0)是固定的,deque的开始位置是不固定的

  • 如果有大量释放操作的话,vector花的时间更少

  • deque支持头部的快速插入与快速删除,这是deque的优点

list 支持频繁的不确定位置元素的移除插入。

set 会自动排序。

map 是元素为键值对组并按键排序的set。

结合概述一章中的关于容器,容器一章的前述内容以及上述简单小结,相信读者已经对C++STL中的容器有了十分清晰而又详尽的理解。恭喜,小可爱又变强了😄

最后更新于