容器是用于存放数据的模板,可变长数组,链表,平衡二叉树等数据结构都在STL中被实现为了容器
容器分为两大类
顺序容器
包括vector,deque,list,他们被称为顺序容器,是因为元素在容器中的位置与元素的值无关,容器不是被排序的,可以被指定插入在任意位置
关联容器
包括set,multiset,map,multimap,这些容器是排序的,容器会被按照一定的顺序排到适当地位置上,插入时不能指定位置
容器适配器
这类容器是STL在前面两类基础容器的基础上屏蔽了一些基础功能,突出或者增强了另一部分功能,实现了三种容器适配器:stack,queue,priority_queue
容器都是类模板,他们实例化以后就成为了容器类
比如使用vector<int>a
就实例化了一个int类型的变量
容器间的比较运算
任何两个容器对象,只要它们的类型相同,就可以用 <、<=、>、>=、==、!= 进行词典式的比较运算
假设有a,b两个类型相同的容器对象,这些运算符的运算规则如下:
- a==b 若a和b中的元素均相等,则返回true,否则为false
- a<b:规则类似于词典中两个单词比较大小,从头到尾依次比较每个元素,如果发生 a 中的元素小于 b 中的元素的情况,则a的值为 true;如果没有发生 b 中的元素小于 a 中的元素的情况,且 a 中的元素个数比 b 少,a的值也为 true;其他情况下值为 false。元素比较大小是通过<运算符进行的
- a != b:等价于 !(a == b)
- a > b:等价于 b < a
- a <= b:等价于 !(b < a)
- a >= b:等价于 !(a < b)
成员函数
所有的容器都有如下两个成员函数:
- zise():返回容器对象中元素的个数
- empty():判断容器是否为空
顺序容器和关联容器还有以下成员函数:
- begin():返回指向容器中第一个元素的迭代器。
- end():返回指向容器中最后一个元素后面的位置的迭代器。
- rbegin():返回指向容器中最后一个元素的反向迭代器。
- rend():返回指向容器中第一个元素前面的位置的反向迭代器。
- erase(...):从容器中删除一个或几个元素。该函数参数较复杂,此处省略。
- clear():从容器中删除所有元素。
如果一个容器是空的,则begin()==end(),rbegin==rend()
顺序容器还有以下常用成员函数:
- front():返回容器中第一个元素的引用。
- back():返回容器中最后一个元素的引用。
- push_back():在容器末尾增加新元素。
- pop_back():删除容器末尾的元素。
- insert(...):插入一个或多个元素
内容参考C语言中文网,侵删
作者:NorthCity1984
出处:https://grimoire.cn/algorithm/stl-sum.html
版权:本文《STL容器总结篇》版权归作者所有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
出处:https://grimoire.cn/algorithm/stl-sum.html
版权:本文《STL容器总结篇》版权归作者所有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任