C++容器(vector、deque、list、map)

(1) vector:将元素置于一个动态数组中,可以随机存储元素(也就是用索引直接存取)。

数组尾部添加或删除元素非常迅速。但在中部或头部就比较费时。

*代码演示:*

取:

at在下标越界时会抛出异常,我们能捕获异常进行处理;而[]下标越界会让程序直接终止;


构造函数:

cbegin, cend, crbegin, crend返回的是常量迭代器,不能通过迭代器修改vector元素的值。

插入(insert):值得注意的是,insert函数返回值是一个迭代器,指向新添加的第一个元素:

删除(erase):

删除一段内容时,前闭后开

front函数,返回第一个元素的引用

crbegin(),crend() 倒着输出






(2) deque:“double end queue”的缩写,也就是双端队列。

*deque的实现相比于vector有些复杂,但本质仍然是优化过的动态数组,只不过相比于单纯的动态数组,在前面添加或删除元素非常快了。*

*可以随机存储元素。*头部和尾部添加或删除元素都非常快(略慢与vector)。但在 中间插入元素比较费时(和vector差不多)。

*代码演示:*

可以在前面添加和删除、可以随机存取元素([]、at):

(3) list:本质就是链表,所以自然具有了链表的属性。

*不能随机存取元素(也就是list无法用索引存取元素)*。在任何位置插入和删除元素都比较迅速。(在任何位置插入删除元素的时间相同,在元素头部操作慢于deque,在元素尾部操作慢于deque和vector)

(4) string:


(5) map/multimap:使用“红黑树”实现,是一种高度平衡的二叉树。

内部元素是成对的“key/value”,也就是“键值/实值”,内部元素依据其键值自动排序,map内部相同的键值只能出现一次,multimap则可以出现多次。

*代码演示:*

posted @ 2023-05-05 20:59  曹剑雨  阅读(104)  评论(0编辑  收藏  举报