MENU

STL容器总结篇

April 4, 2020 • 算法

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

容器分为两大类

顺序容器

包括vector,deque,list,他们被称为顺序容器,是因为元素在容器中的位置与元素的值无关,容器不是被排序的,可以被指定插入在任意位置

关联容器

包括set,multiset,map,multimap,这些容器是排序的,容器会被按照一定的顺序排到适当地位置上,插入时不能指定位置

容器适配器

这类容器是STL在前面两类基础容器的基础上屏蔽了一些基础功能,突出或者增强了另一部分功能,实现了三种容器适配器:stack,queue,priority_queue

容器都是类模板,他们实例化以后就成为了容器类

比如使用vector<int>a就实例化了一个int类型的变量

容器间的比较运算

任何两个容器对象,只要它们的类型相同,就可以用 <、<=、>、>=、==、!= 进行词典式的比较运算

假设有a,b两个类型相同的容器对象,这些运算符的运算规则如下:

  1. a==b 若a和b中的元素均相等,则返回true,否则为false
  2. a<b:规则类似于词典中两个单词比较大小,从头到尾依次比较每个元素,如果发生 a 中的元素小于 b 中的元素的情况,则a的值为 true;如果没有发生 b 中的元素小于 a 中的元素的情况,且 a 中的元素个数比 b 少,a的值也为 true;其他情况下值为 false。元素比较大小是通过<运算符进行的
  3. a != b:等价于 !(a == b)
  4. a > b:等价于 b < a
  5. a <= b:等价于 !(b < a)
  6. a >= b:等价于 !(a < b)

成员函数

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

  1. zise():返回容器对象中元素的个数
  2. 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容器总结篇》版权归作者所有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任