C++ STL中顺序容器类型以及实现原理

原创 2014年10月05日 15:45:25

1.顺序容器类型

vector 支持随机访问
list 支持快速插入与删除
deque 双端队列
stack 后进先出(LIFO)
queue 先进先出(FIFO)
prority_queue 优先队列

2.容器元素类型约束必须满足两个约束:

2.1 元素类型必须支持复制操作

2.2 元素类型必须支持赋值操作


3.vector

内存是连续分配的,支持随机访问,capacity函数是指容器的容量,size函数是指容器中元素的个数,当size == capacity 时,如果再向容器中插入新元素,则容器会自动分配一个更大的连续内存,然后把原来的数据复制到新的连续内存,这样保证了内存的连续性。其中容器支持程序员进行内存管理, reserve函数可以设置容器初始容量,和数组下表类似。

显然容器能支持随机访问,但是元素的插入和删除需要线性时间(除非插入到最后一个元素)。

当有元素或删除插入时,插入元素位置及插入元素之后的元素的迭代器将失效(保证内存连续性,后面元素前移)。若因为插入元素大于容量导致重新分配内存,则所有元素的迭代器失效。


4.list

list的实质是双向环形链表,不支持随机访问,顾内存不一定连续,但是list的插入与删除元素的时间复杂度都是O(1),并且除了删除的当前元素的迭代器会失效,其他元素迭代器不会失效。


5.deque

双端队列,支持随机访问,所需时间为常亮。内存分配是一块,一块的,将每一块连接起来,在开头和末端增加,删除元素效率与元素个数无关,内存自动管理。


6.stack

适配器,由deque实现。不能遍历所有元素,只能后进先出。


7.queue

适配器,由deque实现。不能遍历所有元素,只能先进先出。


8.priority_queue

适配器,由vector实现。不能遍历所有元素,只能访问优先级最高的第一个元素。

相关文章推荐

从零开始学C++之STL(三):迭代器类vector::iterator 和 vector::reverse_iterator 的实现、迭代器类型、常用的容器成员

一、迭代器 迭代器是泛型指针 普通指针可以指向内存中的一个地址 迭代器可以指向容器中的一个位置 STL的每一个容器类模版中,都定义了一组对应的迭代器类。使用迭代器,算法函数可以访问容器中指定位置...

C/C++知识要点2——STL中Vector、Map、Set容器的实现原理

1、Vector是顺序容器,是一个动态数组,支持随机存取、插入、删除、查找等操作,在内存中是一块连续的空间。在原有空间不够情况下自动分配空间,增加为原来的两倍。vector随机存取效率高,但是在vec...

STL顺序容器之vector类型

顺序容器: 将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器。 顺序容器的元素排列与元素值无关,而是由元素添加到容器里的次序决定。 标准库中定义了三种顺序容器类型...
  • ajioy
  • ajioy
  • 2012年03月16日 23:15
  • 2461

STL顺序容器之vector类型

顺序容器: 将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器。 顺序容器的元素排列与元素值无关,而是由元素添加到容器里的次序决定。 标准库中定义了三种顺序容器类型...

C++ Primer笔记5_STL之顺序容器

标准模板库。从根本上说,STL是一些“容器”的集合,这些“容器”有list, vector,set,map等,STL也是算法和其它一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年...

**c++ stl 顺序容器: begin(),end()和front(),back()区别和使用**

c++ stl 顺序容器: begin(),end()和front(),back()区别和使用0. begin(),end()和front(),back()函数的原型 begin函数: 函数原型:...

C++ Primer 学习笔记_29_STL实践与分析(3) --顺序容器的操作(下)

 STL实践与分析 --顺序容器的操作(下) 六、访问元素     如果容器非空,那么容器类型的front和back成员将返回容器的第一个和最后一个元素的引用。 【与begi...

C++ Primer学习笔记:STL顺序容器

熊金水 2011-05-14 1、三种顺序容器的特点: Vector:在内存中顺序存储,支持快速随机访问,类似于C里的数组。可以高效的在vector尾部添加删除元素,但是,在vecto...

【day0412 C++】顺序容器 STL list类的应用

# 在list开头插入元素 # 在list尾巴插入元素 # 在list中间插入元素 # 删除list中的元素 # 对list中的元素进行反转和排序 Demo1:插入元素 #incl...

C++ Primer 学习笔记_28_STL实践与分析(2) --顺序容器的操作(上)

 STL实践与分析 --顺序容器的操作(上) 引: 每种顺序容器都提供了一组有用的类型定义以及以下操作:     1)在容器内添加元素;     2)在容器中删除元素; ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ STL中顺序容器类型以及实现原理
举报原因:
原因补充:

(最多只允许输入30个字)