STL标准库中的容器
容器:顾名思义,我的理解就是把同一种数据类型括起来,作为一捆。如vector<int> ,vector就是个容器,里面全是一个个的int型数据。
容器包括三大块:
顺序型容器:
(1)vector 可以直接通过[ ]来访问。可以从后面插入与删除。因为内存连续,拷贝复制会造成内存块的拷贝。 调用得#include<vector> :不在乎效率,可选。
(2)deque vector能用的,deque也能用,只是deque双向的。头部也能快速插入和删除(pop)。 调用得#include<deque> :重点关心向量两端插入,删除操作时,可选。
(3)list list是一个双向链表。在插入删除时,内存不需要拷贝,通过指针来实现访问。(随机访问需要遍历) 调用得#include<list> :出现大量删除,插入操作时,可选。
关联型容器:
(1)set 该容器内的数是唯一的。如果需要修改某数,不能直接修改。得删除再插入。 调用得#include<set> :用二叉树,节点(类似指针)操作。不需要内存移动和拷贝。
(2)map 该容器内的数值是唯一的。 调用得#include<map>
容器适配器:
STL 中包含三种适配器:栈stack 、队列queue 和优先级priority_queue 。
适配器是容器的接口,它本身不能直接保存元素,它保存元素的机制是调用另一种顺序容器去实现,即可以把适配器看作“它保存一个容器,这个容器再保存所有元素”。
STL 中提供的三种适配器可以由某一种顺序容器去实现。默认下stack 和queue 基于deque 容器实现,priority_queue 则基于vector 容器实现。当然在创建一个适配器时也可以指定具体的实现容器,创建适配器时在第二个参数上指定具体的顺序容器可以覆盖适配器的默认实现。
由于适配器的特点,一个适配器不是可以由任一个顺序容器都可以实现的。
栈stack 的特点是后进先出,所以它关联的基本容器可以是任意一种顺序容器,因为这些容器类型结构都可以提供栈的操作有求,它们都提供了push_back 、pop_back 和back 操作;
队列queue 的特点是先进先出,适配器要求其关联的基础容器必须提供pop_front 操作,因此其不能建立在vector 容器上;
优先级队列priority_queue 适配器要求提供随机访问功能,因此不能建立在list 容器上。
STL标准库中的容器的更多相关文章
- 《深入实践C++模板编程》之六——标准库中的容器
1.容器的基本要求 a.并非所有的数据都可以放进容器当中.各种容器模板对所存数据类型都有一个基本要求——可复制构造.将数据放进容器的过程就是通过数据的复制构造函数在容器内创建数据的一个副本的过程. b ...
- 关于C++ STL标准库中map 的多元素应用
map的特性是,所有的元素会根据键值自动排序.map的所有元素都是pair,同时拥有实值(value)和键值(key).pair的第一个元素被视为键值,第二个被视为实质piar 的定义 templat ...
- 参考C++STL标准库中对了的使用方法
http://www.cppblog.com/zhenglinbo/archive/2012/09/18/191170.html 参考:http://www.cppblog.com/zhenglinb ...
- STL标准库-Move对容器效率的影响
技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 C++11新增move()语法(我暂时交错右值引用),在前面我有一篇文章叫 C++11_右值引用 简单的介绍了右值引用类的实现, ...
- C++STL标准库学习笔记(五)set
前言: 在这个笔记中,我把大多数代码都加了注释,我的一些想法和注解用蓝色字体标记了出来,重点和需要关注的地方用红色字体标记了出来,这一篇后面主要都是我的记录了,为了防止大片蓝色字体出现,后面就不改蓝色 ...
- STL笔记(6)标准库:标准库中的排序算法
STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew A ...
- STL标准库-容器-set与multiset
技术在于交流.沟通,转载请注明出处并保持作品的完整性. set与multiset关联容器 结构如下 set是一种关联容器,key即value,value即key.它是自动排序,排序特点依据key se ...
- STL标准库-容器-vector
技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性. 向量容器vector是一个动态数组,内存连续,它是动态分配内存,且每次扩张的原来的二倍. 他的结构如下 一 定义 vector ...
- STL标准库-容器-deque
技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性. deque双向开口可进可出的容器 我们知道连续内存的容器不能随意扩充,因为这样容易扩充别人那去 deque却可以,它创造了内存 ...
随机推荐
- 吴裕雄--天生自然 PYTHON3开发学习:SMTP发送邮件
import smtplib smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] ) SMTP.sendmail(from_addr, ...
- 讯飞语音的中的bug用户校验失败
用户校验失败:原因是目录没有复制粘贴正确. 下面是刚刚下载的SDK目录: 下面的是自己Android工程中的目录:注意复制粘贴的文件路径要正确
- PAT甲级——1108.Finding Average (20分)
The basic task is simple: given N real numbers, you are supposed to calculate their average. But wha ...
- voxelmorph配置
简介 VoxelMorph使用CNN实现了非监督的医学图像配准,速度较之前的方法有很大提升.主要特点有: 提出了一种基于学习的解决方案,不需要在训练过程中获取诸如ground truth对应或解剖标志 ...
- Class<T> 泛型获取T的class
getClass().getGenericSuperclass()返回表示此 Class 所表示的实体(类.接口.基本类型或 void)的直接超类的 Type然后将其转换ParameterizedTy ...
- Getting Started with STM32 in Segger Embedded Studio
初识Segger Embedded Studio(SES) 第一次见SES是在“安富莱电子论坛”上,“硬汉”提到SES的一些特性,再加上Jlink的大名,于是试试他们家的IDE. SES貌似也是基于E ...
- overflow text-overflow 超过部分隐藏问题
overflow:是针对容器内所有的数据溢出的一种统一处理方式,不管容器内的存储的是文本 图片还是其他的数据 统一取值; hidden隐藏, scroll滚动条显示,visible溢出显示text-o ...
- 变得“不正经”的CES,竟然越来越好玩了
在所有科技界的展会中,国人最熟悉的当属CES.作为科技行业的风向指示标,CES一直在扮演着重要的潮流指引者角色.不过,现在的CES似乎变得越来越"不正经"了!原本CES是国际消费类 ...
- SQL数据库的查询方法
简单查询: 一.投影 select * from 表名 select 列1,列2... from 表名 select distinct 列名 from 表名 二.筛选 select top 数字 列| ...
- python语法基础-基础-运算符
############################################ Python语言支持以下类型的运算符: 算术运算符 比较(关系)运算符 赋值运算符 逻辑运算符 位运算符 成员 ...