关闭

STL — 7个常用容器的区别

643人阅读 评论(0) 收藏 举报
分类:

7个常用容器的区别

                                                                                               


1.STL容器分类:

STL的容器可以分为以下几个大类: 
一 顺序(序列)容器, 有vector, list, deque, string,stack( 适配器类), queue( 适配器类), priority queues( 适配器类)

二   关联容器,     有set, multiset, map, multimap, bitset,hash_set, hash_map, hash_multiset, hash_multimap

 

2.容器比较

  vector deque list set multiset map multimap
名称 向量容器 双向队列容器 列表容器 集合 多重集合 映射 多重映射

内部数

据结构

连续存储的数组形式(一端开口的组)

连续或分段连续存储数组(两端

开口的数组)

双向环状链表 红黑树(平衡检索二叉树) 红黑树 红黑树 红黑树

 

             
头文件 #include <vector> #include <deque> #include <list> #include <set> #include <set> #include <map> #include <map>
操作元素的方式 下标运算符:[0](可以用迭代器,但插入删除操作时会失效)

下标运算符或迭代器

只能用迭代器(不断用变量值来递推新值,相当于指针),不支持使用下标运算符

迭代器 迭代器 迭代器 迭代器
插入删除操作迭代器是否失效 插入和删除元素都会使迭代器失效 插入任何元素都会使迭代器失效。删除头和尾元素,指向被删除节点迭代器失效,而删除中间元素会使所有迭代器失效 插入,迭代器不会失效。删除,指向被删除节点迭代器失效 插入,迭代器不会失效。删除,指向被删除节点迭代器失效 插入,迭代器不会失效。删除,指向被删除节点迭代器失效 插入,迭代器不会失效。删除,指向被删除节点迭代器失效 插入,迭代器不会失效。删除,指向被删除节点迭代器失效

3.各容器特点比较以及选择

  vector deque list set multiset map multimap
名称 向量容器 双向队列容器 列表容器 集合 多重集合 映射 多重映射

特点

增加和获取元素效率

很高,插入和删除的

效率很低

 

增加和获取元素效率

较高,插入和删除的

效率较高

 

增加和获取元素效率

很低,插入和删除的

效率很高

1.键(关键字)和值(数据)相等(就是模版只有一个参数,键和值合起来)

2.键唯一

3.元素默认按升序排列

1.键和值相等

2.键可以不唯一

3.元素默认按升序排列

1.键和值分开(模版有两个参数,前面是键后面是值)

2.键唯一

3.元素默认按键的升序排列

1.键和值分开

2.键可以不唯一

3.元素默认按键的升序排列

定义容器

vector<string> book(50); deque<string> book(50); list<string> book; set<string> book; multiset<string> book; map<int,string> book; multimap<int,string> book;
               

 

4.各容器的图表说明

   4.1 vector

  4.2 deque

  4.3 list

  4.4 map/multimap

  4.5 set/multiset

本篇文章来源:http://blog.csdn.net/longhuahaha/article/details/8365041
1
0
查看评论

STL常用容器对比

STL的常用容器大致有以下8个: 1.vector     vector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问。由于具有连续的存储空间,所以在插入和删除操作方面,效率比较慢。vector有多个构造函数,默认的构造函数是构造一个初始长度为0的内存空间,且分...
  • u011822862
  • u011822862
  • 2016-08-13 22:50
  • 1393

STL中常用容器的选择

今天去面试问到了stl的常用容器问题,但是提前没准备,平时也没太在意,还有就是忘了。总之,回答得很狼狈。 希望能在这里整理一下: 1.vector 2.deque 3.list 4.set 5.map 6.stack 7.queue
  • cz168love
  • cz168love
  • 2015-05-28 20:02
  • 1120

STL常用容器详细解析

这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点STL中的常用容器包括:顺序性容器(vector、deque、list)、关联容器(map、set)、容器适配器(queue、stac)
  • ahuang1900
  • ahuang1900
  • 2014-08-28 19:33
  • 1744

STL中各种容器的简单特点

(1) vector 内部数据结构:数组。 随机访问每个元素,所需要的时间为常量。 在末尾增加或删除元素所需时间与元素数目无关,在中间或开头增加或删除元素所需时间随元素数目呈线性变化。 可动态增加或减少元素,内存管理自动完成,但程序员可以使用reserve()成员函数来管理内存。 vect...
  • cc946079647
  • cc946079647
  • 2014-07-17 13:32
  • 1138

C++ STL基本容器的使用

C++中有两种类型的容器:顺序容器和关联容器。顺序容器主要有vector、list、deque等。其中vector表示一段连续的内存,基于数组实现,list表示非连续的内存,基于链表实现,deque与vector类似,但是对首元素提供插入和删除的双向支持。关联容器主要有map和set。map是key...
  • conanswp
  • conanswp
  • 2014-04-09 21:01
  • 53093

STL各种容器的区别

STL各种容器的区别
  • ac_hexin
  • ac_hexin
  • 2016-07-25 15:45
  • 810

Stl 容器一般排序算法

排序算法 1、创建堆make_heap 2、元素入堆push_heap(默认插入最后一个元素) 3、元素出堆pop_heap(与push_heap一样,pop_heap必须对堆操作才有意义) #include ?????? #include #include ...
  • bao_bei
  • bao_bei
  • 2014-12-24 11:40
  • 362

C++ STL/ (10) 阶段小结--容器的共性以及使用场景

在前面的blog中,我们介绍了顺序容器(string,vector,deque,list,stack,queue)和关联容器(set,multiset,map,multimap)。本节,我们就来总结一下以上这些容器使用中的异同。 顺序容器 容器名称 初始化 赋值 元素存取 大小 ...
  • anran_zhou
  • anran_zhou
  • 2017-04-09 13:36
  • 368

C++ STL容器时间复杂度下的最佳选择

STL在C++11中还算是火热,想必大家早有耳闻,对于泛型编程而言,或者数据结构而言,STL都显得尤为重要。今天让我们来了解一下,根据时间复杂度这个条件,挑选最适合自己程序的STL。
  • CSND_Ayo
  • CSND_Ayo
  • 2017-06-21 16:24
  • 1414

STL几种容器的区别简介

虽然这几种都用过了,但对于它的理解还没有形成概念性的知识,看过这个后觉得形成了框架性的知识,觉得很有用,所以转载。vector - 会自动增长的数组<br />vector又称为向量数组,他是为了解决程序中定义的数组是<br />不能动态改变大小这个缺点而出现的。<br...
  • pcsuite
  • pcsuite
  • 2011-02-14 11:13
  • 2178
    个人资料
    • 访问:100507次
    • 积分:2867
    • 等级:
    • 排名:第14626名
    • 原创:164篇
    • 转载:17篇
    • 译文:0篇
    • 评论:174条
    最新评论