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实现。不能遍历所有元素,只能访问优先级最高的第一个元素。

一步一步用Delphi6实现Web Service

      本文介绍的是如何用Delphi6开发Web Service程序,并把服务程序放在IIS Web服务器上提供给各种客户程序调用。一编写服务程序第一步:File----->New----->O...
  • coala
  • coala
  • 2001-10-26 11:27:00
  • 726

STL系列之五 priority_queue 优先级队列

priority_queue 优先级队列是一个拥有权值概念的单向队列queue,在这个队列中,所有元素是按优先级排列的(也可以认为queue是个按进入队列的先后做为优先级的优先级队列——先进入队列的元...
  • MoreWindows
  • MoreWindows
  • 2011-11-16 12:39:00
  • 51954

史上最全的SGU题目分类

由于SGU上神题遍地,特列此表,便于训练时分类训练。 101 Domino 欧拉路 102 Coprime 枚举/数学方法 103 Traffic Lights 最短路 104 Lit...
  • synapse7
  • synapse7
  • 2014-02-13 23:39:38
  • 5168

STL之顺序容器和关联容器总结

顺序容器          Vector中所采用的数据结构非常简单:线性连续空间。当分配空间被占满而仍然需要添加元素时,vector便会进行一场空间重新配置的大工程!在这里,程序员需要注意的是,一旦...
  • lhc548453346
  • lhc548453346
  • 2016-03-07 21:02:49
  • 1125

STL 顺序容器,关联容器

向量 vector :   是一个线性顺序结构。相当于数组,但其大小可以不预先指定,并且自动扩展。它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数组。 在创建一个ve...
  • gavin0123
  • gavin0123
  • 2014-08-18 15:12:41
  • 1274

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

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

STL 之顺序容器

目录 顺序容器gonengn
  • haifengzhilian
  • haifengzhilian
  • 2014-04-12 13:19:14
  • 1482

【C++】顺序容器

一个容器就是一些特定类型对象的集合。顺序容器为程序员提供了控制元素存储和访问顺序的能力。这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应。顺序容器的概述下表列出了标准库中的顺序容器,所有顺序...
  • Tanswer_
  • Tanswer_
  • 2016-11-08 23:44:21
  • 1109

STL中vector, Map, Set的实现原理

1、Vector是顺序容器,是一个动态数组,支持随机存取、插入、删除、查找等操作,在内存中是一块连续的空间。在原有空间不够情况下自动分配空间。所谓的自动分配空间指的是会另外开辟一个是原有空间两倍的内存...
  • mimi9919
  • mimi9919
  • 2016-07-25 21:32:47
  • 1605

STL中容器的底层实现原理

 在STL中基本容器有: vector、list、deque、set、map set 和map都是无序的保存元素,只能通过它提供的接口对里面的元素进行访问 set:集合, 用来判断某一个元素...
  • aa838260772
  • aa838260772
  • 2014-09-30 11:05:23
  • 3409
收藏助手
不良信息举报
您举报文章:C++ STL中顺序容器类型以及实现原理
举报原因:
原因补充:

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