C++ 容器(STL容器)
容器(container)用于存放数据的类模板。可变长数组、链表、平衡二叉树等数据结构在STL中都被实现为容器。
在使用容器时,即将容器类模型实例化为容器类,会指明容器中存放的元素是什么类型。
容器可以分为两大类:顺序容器和关联容器
顺序容器
顺序容器有可变长动态数组vector、双端队列deque、双向链表list
之所以被称为顺序容器,是因为元素在容器中的位置同元素的值无关,即容器是不排序的。
关联容器
关联容器有以下四种:set、multiset、map、multimap。关联容器内的元素是排序的。插入元素时,容器会按一定的排序规则将元素放到适当的位置,因此插入元素时不能指定位置。
默认情况下,关联容器中的元素是从小到大排序(或按关键字从小到大排序),而且用<运算符比较元素或关键字大小,也正是因为排好序的,关联容器在查找时具有很好的性能。
成员函数
所有的容器都有以下两个成员函数:
- int size():返回容器对象元素的个数
- bool empty():判断容器对象是否为空
- begin():返回指向容器中第一个元素的迭代器
- end():返回指向容器最后一个元素后面的位置的迭代器
- rbegin():返回指向容器中最后一个元素的反向迭代器
- rend():返回指向容器中第一个元素前面的位置的反向迭代器
- erase(...):从容器中删除一个或几个元素。
- clear():从容器中删除所有元素
如果一个容器是空的,则begin()和end()的返回值是相等的,rbegin()和rend()的返回值也是相等的
顺序容器还有以下常用成员函数:
- front():返回容器中第一个元素的引用
- back():返回容器中最后一个元素的引用
- push_back():在容器末尾添加元素
- pop_back():删除容器末尾的元素
- insert(...):插入一个或多个元素