什么是容器
容器,就是用来存放数据的一个类模板,了解java语言中的类与对象的概念之后,简单的说,容器可以看成是一种将具有共同特征的一类事物抽象出来的一个模板(例如,教师这个职业就是一种类,共同特征有教师年龄,教师级别等),使用容器的过程就是讲这种模板实例化,具体化的过程。(即将共同特征根据具体情况赋予具体的值)。
诸如,数组,链表,集合和平衡二叉树等数据结构都被实现为容器。
不同的容器,由于对容器中数据的操作不同,封装在该容器上的算法也有所不同。
容器分类
-
顺序容器:可变长动态数组vector,双端队列deque,双端链表list。
在这类容器中,元素是没有排序的,插入元素时可以指定容器的任意位置(如头部,尾部)。 -
关联容器:集合set,映射map等。此类容器中的元素是排好序的,因此插入元素时,不能任意插入到指定位置,正因为这个特点,查找算法在此类容器中性能更高。
-
容器适配器:栈stack,队列queue,优先级队列priority_queue.此类容器是在上述两类容器的基础之上,对一些功能上进行一定限制与增添。
容器共性
1.所有容器都具有的成员方法:
- int size():返回容器中元素的个数
- bool empty():返回一个布尔类型变量,容器为空,值为true;容器不为空,值为false。
2.顺序容器特有的成员方法: - front():返回容器中第一个元素的引用。
- back():返回容器中最后一个元素的引用。
- push_back():在容器末尾增加新元素。
- pop_back():删除容器末尾的元素
- insert(…):插入一个或多个元素。该函数参数较复杂,此处省略。
3.顺序容器和关联容器还有以下成员函数: - begin():返回指向容器中第一个元素的迭代器。
- end():返回指向容器中最后一个元素后面的位置的迭代器。
- rbegin():返回指向容器中最后一个元素的反向迭代器。
- rend():返回指向容器中第一个元素前面的位置的反向迭代器。
- erase(…):从容器中删除一个或几个元素。该函数参数较复杂,此处省略.
- clear():从容器中删除所有元素。