STL容器与算法(一)容器的简介

穿精又带淫゛_ 提交于 2020-02-07 07:20:21

STL容器

STL容器包括顺序式容器关联式容器

  • 顺序式容器

    顺序容器包括:可变长动态数组 vector、双端队列 deque、双向链表 list、队列queue、有限队列priority_queue、栈stack等吗,特点如下:

    • vector:动态数组,从末尾能快速插入与删除,直接访问任何元素。
    • list:双链表,从任何地方快速插入与删除。
    • deque:双向队列,从前面或后面快速插入与删除,直接访问任何元素。
    • queue:队列,先进先出。
    • priority_queue:优先队列,最高优先级元素总是第一个出列。
    • stack:栈,后进后出。

    它们之所以被称为顺序容器,是因为元素在容器中的位置同元素的值无关,即容器不是排序的。将元素插入容器时,指定在什么位置(尾部、头部或中间某处)插入,元素就会位于什么位置。

  • 关联式容器

    关联式容器包括set、multiset、map、multimap等。

    • set:集合,快速查找,不允许重复值。
    • multist:快速查找,允许重复值。
    • map:一对多映射,基于关键字快速查找,不允许重复值。
    • multimap:一对多映射,基于关键字快速查找,允许重复值。

任何两个容器对象,只要它们的类型相同,就可以用<、<=、>、>=、==、!=进行比较运算。 例如假设a、b是两个类型相同的容器对象,其规则如下:

  • a == b:若 a 和 b 中的元素个数相同,且对应元素均相等,则a == b的值为 true,否则值为 false。元素是否相等是用==运算符进行判断的。
  • a < b:依次比较,若a中元素少于b则判断成立,或者a中每个元素都大于b中对应的元素成立,为true,否则为false。
  • a != b:等价于 !(a == b)。
  • a > b:等价于 b < a。
  • a <= b:等价于 !(b < a)。
  • a >= b:等价于 !(a < b)。

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

  • int size():返回容器对象中元素的个数。
  • bool empty():判断容器对象是否为空。

顺序容器和关联容器还有以下成员函数:

  • begin():返回指向容器中第一个元素的迭代器。
  • end():返回指向容器中最后一个元素后面的位置的迭代器。
  • rbegin():返回指向容器中最后一个元素的反向迭代器。
  • rend():返回指向容器中第一个元素前面的位置的反向迭代器。
  • erase(…):从容器中删除一个或几个元素。该函数参数较复杂,此处省略。
  • clear():从容器中删除所有元素。

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

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

  • front():返回容器中第一个元素的引用。
  • back():返回容器中最后一个元素的引用。
  • push_back():在容器末尾增加新元素。
  • pop_back():删除容器末尾的元素。
  • insert(…):插入一个或多个元素。

内容来自,《算法入门到进阶》罗永军、郭卫斌2019版
C语言中文网——STL容器介绍

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!