C++ STL之容器简述

C++之STL容器简述

C++中STL中的容器是一种数据结构类型,每种容器都有属于自己的操作集和数据特点。容器之所以受到众多C++爱好者以及开发人员的青睐,就是因为容器使用起来非常方便,对于数据的存储,访问,更新,删除等操作可以很方便地实现,尽管任何一种容器不是万能的,不会对所有操作都具有非常优良的时间和空间复杂度,但C++提供了多种不同的容器,每种容器都有其适应的场景,几乎可以满足大部分的需求

C++的STL标准模板库提供了多种容器,例如数组vector,链表list,集合set,映射map等,这些容器都是通过模板编写实现的,因此可以实现不同数据类型的存储以及操作。容器一个显著的特点是它可以自行扩展。在解决问题时我们常常不知道我们需要存储多少个对象,也就是说我们不知道应该创建多大的内存空间来保存我们的对象。 显然,数组在这一方面也力不从心。容器的优势就在这里,它不需要你预先告诉它你要存储多少对象,只要你创建一个容器对象,并合理的调用它所提供的方法,所 有的处理细节将由容器来自身完成。它可以为你申请内存或释放内存,并且用最优的算法来执行您的命令。C++的容器可以分为两大类:
顺序性容器和关联性容器。

  1. 顺序性容器是 一种各元素之间有顺序关系的线性表,是一种线性结构的可序群集。顺序性容器中的每个元素均有固定的位置,除非用删除或插入的操作改变这个位置。这个位置和 元素本身无关,而和操作的时间和地点有关,顺序性容器不会根据元素的特点排序而是直接保存了元素操作时的逻辑顺序。STL提供了三个顺序性容器:向量(vector)、双端队列(deque)、列表(list),此外你也可以把 string 和 array 当做一种序列式容器。
  2. 关联性容器和 顺序性容器不一样,关联式容器是非线性的树结构,更准确的说是二叉树结构。各元素之间没有严格的物理上的顺序关系,也就是说元素在容器中并没有保存元素置 入容器时的逻辑顺序。但是关联式容器提供了另一种根据元素特点排序的功能,这样迭代器就能根据元素的特点“顺序地”获取元素。STL提供了四个关联式容器:集合(set)、多重集合(multiset)、映射(map)和多重映射(multimap)。
  3. 容器适配器是一个比较抽象的概念, C++的 解释是:适配器是使一事物的行为类似于另一事物的行为的一种机制。容器适配器是让一种已存在的容器类型采用另一种不同的抽象类型的工作方式来实现的一种机 制。STL提供了三种容器适配器:stack(后进先出)、queue(先进先出)、priority_queue(按优先级出队)。
    下表列出STL 定义的三类容器所包含的具体容器类:
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Inthesilence/article/details/106608644