C++容器(STL容器总结)---1

容器用于存放数据的类模板。可变长数组、链表、平衡二叉树等数据结构在STL中都被实现为容器

容器中可以存放基本类型的变量,也可以存放对象。对象或基本类型的变量被插入容器中时,实际插入的是对象或变量的一个复制品

STL中的许多算法(函数模版),如排序,查找等算法,在执行过程中会对容器中的元素进行比较。这些算法在比较元素是否相等时通常用运算符进行,比较大小通常用<运算符进行,因此,被放入容器的对象所属的类最好重载==和<运算符,以使得两个对象==和<进行比较是有定义的

容器分为两大类:

顺序容器:

            顺序容器有三种:可变长动态数组Vector、双端队列deque、双向链表list。

            它们被称为顺序容器是因为元素在容器中的位置同元素的值无关,即容器不是排序的。将元素插入容器时,指定在什么位置插入,元素就会位于什么位置。

关连式容器:

             关连式容器有四种:set、multiset、map、multimap。关连式容器内的元素是排序的。插入元素时,容器会按一定的排序规则将元素放到适当的位置上,因此插入元素时不能指定位置。

              默认情况下,关连式容器中的元素是从小到大排序的而且用<运算符比较元素或关键字大小。

除了以上两类容器外,STL还在两类的基础上屏蔽一部分功能,突出或增加另一部分功能,实现了三种容器适配器:栈stack,队列queue、优先级队列priority_queue

容器都是类模版。它们实例化后就成为容器类。用容器类定义的对象称为容器对象

所有容器都有以下两个成员函数:

         int size():返回容器对象中元素的个数

        bool empty():判断容器对象是否为空

顺序容器都有以下两个成员函数:

       begin():返回指向容器中第一个元素的迭代器

       end():返回指向容器中最后一个元素后面位置的迭代器

       rbegin():返回指向容器中最后一个元素的反向迭代器。

       rend():返回指向容器中第一个元素前面的位置的反向迭代器。

       erase(...):从容器中删除一个或几个元素。

       clear():从容器中删除所有元素。

如果一个容器是空的,则 begin() 和 end() 的返回值相等,rbegin() 和 rend() 的返回值也相等

顺序容器还有以下常用成员函数:

       front():返回容器中第一个元素的引用。

       back():返回容器中最后一个元素的引用。

       push_back():在容器末尾增加新元素。

       pop_back():删除容器末尾的元素。

       insert(...):插入一个或多个元素。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章