到目前为止,我们已经把所有容器全部学习完毕!包括:
序列式容器:array容器、vector容器、deque容器、 list容器、forward_list容器。
有序关联式容器:map容器、set容器、multimap容器、multiset容器。
无序关联式容器:unordered_map容器、unordered_multimap容器、unordered_set容器、unordered_multiset容器。
学了这么多容器,到底用哪一个最合适呢?当我们需要维护一个班级的学生信息时,我们考虑的是元素的操作效率以及元素的动态增减,那么选择vector容器肯定比选择list容器要好一些;当我们存储空间有限,需要频繁地进行增删元素时,list容器要比array容器要好一些;当我们需要通过键来快速操作值时,无序关联式容器肯定要比序列式容器好!可见,正确选择容器的关键是仔细分析题目需求!通常情况下,我们一般会面对以下四种需求:
1. 随机访问。
2. 频繁增删。
3查找且有序。
4. 快速查找。
面对第一种需求,我们尽量选择vector容器,因为它既拥有数组的连续访问性又能够“动态扩展”,其次再选择array容器或是deque容器。面对第二种需求,我们不用多想,肯定选择list容器,因为我们需要频繁对元素进行增删,如果你选vector这种容器,又要扩容又要复制,得多费时间啊。面对第三种需求,用map容器就最为合适了,就像我们查字典一样,根据拼音或部首进行字的查询,直接跳到对应的地方查字,就不用一页一页地找。最后一种数据库里最常见,比如银行系统就需要根据用户账户快速定位用户全部信息,及时更新数据。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程