STL容器
STL容器包括顺序式容器和关联式容器。
-
顺序式容器
顺序容器包括:可变长动态数组 vector、双端队列 deque、双向链表 list、队列queue、有限队列priority_queue、栈stack等吗,特点如下:
- vector:动态数组,从末尾能快速插入与删除,直接访问任何元素。
- list:双链表,从任何地方快速插入与删除。
- deque:双向队列,从前面或后面快速插入与删除,直接访问任何元素。
- queue:队列,先进先出。
- priority_queue:优先队列,最高优先级元素总是第一个出列。
- stack:栈,后进后出。
它们之所以被称为顺序容器,是因为元素在容器中的位置同元素的值无关,即容器不是排序的。将元素插入容器时,指定在什么位置(尾部、头部或中间某处)插入,元素就会位于什么位置。
-
关联式容器
关联式容器包括set、multiset、map、multimap等。
- set:集合,快速查找,不允许重复值。
- multist:快速查找,允许重复值。
- map:一对多映射,基于关键字快速查找,不允许重复值。
- multimap:一对多映射,基于关键字快速查找,允许重复值。
任何两个容器对象,只要它们的类型相同,就可以用<、<=、>、>=、==、!=进行比较运算。 例如假设a、b是两个类型相同的容器对象,其规则如下:
- a == b:若 a 和 b 中的元素个数相同,且对应元素均相等,则a == b的值为 true,否则值为 false。元素是否相等是用==运算符进行判断的。
- a < b:依次比较,若a中元素少于b则判断成立,或者a中每个元素都大于b中对应的元素成立,为true,否则为false。
- a != b:等价于 !(a == b)。
- a > b:等价于 b < a。
- a <= b:等价于 !(b < a)。
- a >= b:等价于 !(a < b)。
所有容器都有以下两个成员函数:
- int size():返回容器对象中元素的个数。
- bool empty():判断容器对象是否为空。
顺序容器和关联容器还有以下成员函数:
- begin():返回指向容器中第一个元素的迭代器。
- end():返回指向容器中最后一个元素后面的位置的迭代器。
- rbegin():返回指向容器中最后一个元素的反向迭代器。
- rend():返回指向容器中第一个元素前面的位置的反向迭代器。
- erase(…):从容器中删除一个或几个元素。该函数参数较复杂,此处省略。
- clear():从容器中删除所有元素。
如果一个容器是空的,则 begin() 和 end() 的返回值相等,rbegin() 和 rend() 的返回值也相等。
顺序容器还有以下常用成员函数:
- front():返回容器中第一个元素的引用。
- back():返回容器中最后一个元素的引用。
- push_back():在容器末尾增加新元素。
- pop_back():删除容器末尾的元素。
- insert(…):插入一个或多个元素。
内容来自,《算法入门到进阶》罗永军、郭卫斌2019版
C语言中文网——STL容器介绍
来源:CSDN
作者:diviner_s
链接:https://blog.csdn.net/diviner_s/article/details/104195945