STL基础4:STL7个常用容器的比较

【STL】容器分类及用法(图文+代码详解) STL学习笔记02 阅读详情

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.容器比较

 vectordequelistsetmultisetmapmultimap
名称向量容器双向队列容器列表容器集合多重集合映射多重映射

内部数

据结构

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

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

开口的数组)

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

 

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

下标运算符或迭代器

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

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

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

 vectordequelistsetmultisetmapmultimap
名称向量容器双向队列容器列表容器集合多重集合映射多重映射

特点

增加和获取元素效率

很高,插入和删除的

效率很低

 

增加和获取元素效率

较高,插入和删除的

效率较高

 

增加和获取元素效率

很低,插入和删除的

效率很高

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

STL中的常见容器 如果要在定义pair时进行初始化,只需要跟上一对圆括号,里面填初始值即可如果要在代码中临时构建一个pair,有如下两种方法:使用make pair函数: make pair("Hello”,4);两个pair类型数据可以直接使用==、!=、<、<=、>、>=比较大小,比较规则是: 先以first的大小作为标准,只有当first相等时才去判别second的大小。存储关联数据存储学生姓名和分数vector v1;//向量中的元素为字符vector v2;//向量中的元素为整型数据。 阅读详情

相关推荐

C++中STL各容器详解

一、STL中六大组件: 1)容器(Container),是一种数据结构,如list,vector,和deques ,以模板类的方法提供。为了访问容器中的数据,可以使用由容器类输出的迭代器; 2)迭代器(Iterator),提供了访问容器中对象的方法。例如,可以使用一对迭代器指定list或vector中的一定范围的对象。迭代器就如同一个指针。事实上,C++的指针也是一种迭代器。但是,迭代器也可以...

king_weng的博客 7747

STL常见容器

STL常见容器 序列式容器 1. vector(array) vector, vector 与数组array类似。 array是C++11标准中新添加的,不可改变容器的大小,遇到空间不足的情况需要创造更大的空间,并把之前的数据拷贝到新空间中,array是存储在栈中的,所以速度更快。 vector使用更加灵活的动态空间来进行配置。在空间不足的时候,vector可以自动扩展空间容纳新元素,做到按需供给。在扩充空间的过程中仍然需要的是,重新分配空间、移动数据、释放原空间 2. deque(queue、st

LushMountain的博客 2800

STL- 常用容器

一、string容器1、string基本概念本质:string是C++风格的字符串,而string本质上是一个类string和char * 区别:char * 是一个指针string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。特点:string 类内部封装了很多成员方法例如:查找find,拷贝copy,删除delete 替换replace,插入insertstring管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责。

m0_53263647的博客 1275

C++ STL常用容器

C++的STL中,有哪几种容器? 容器 在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。 序列容器(7个) vector vector是一段连续的内存地址,基于数组实现,其提供了自动内存管理功能(采用了STL普遍的内存管理器allocator),可以动态改变对象长度,提供随机访问。在尾部添加和删除元素的时间是常数的,但在头部或中间就是线性时间。 在ve...

a834595603的博客 8734

EWF写保护功能详解:从安装到实战操作指南

本文详细介绍了EWF写保护功能的安装与实战操作指南。EWF(Enhanced Write Filter)通过重定向写入操作保护硬盘分区,特别适合需要长期稳定运行的系统场景。文章涵盖从安装准备、图形界面操作到命令行高级管理的全流程,并提供了常见问题的解决方案,帮助用户轻松掌握这一实用工具。

weixin_28710999的博客 446

网工实验笔记:SNMP的配置

简单网络管理协议SNMP(Simple Network Management Protocol)是广泛应用于TCP/IP网络的网络管理标准协议。SNMP提供了一种通过运行网络管理软件的中心计算机(即网络管理工作站)来管理设备的方法。

2301_76170756的博客 2115

c++ stl set容器常用用法

et是STL中一种标准关联容器。它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。set,顾名思义是“集合”的意思,在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection),差(set_difference) 并(set_union),对称差(set_symmetric_difference) 等一些集合上的操作,如果需要集合中的元素允许重复那么可以使用multiset。

shuaizhijun的博客 2万+

kettle多表数据迁移

点击 文件——新建——作业,在左侧的 核心对象 标签下选择 通用,双击添加一个 start ,一个 转换 ,一个 作业 和一个 成功 到右侧的作业面板,这些作业项都可以改名字。点击文件—新建—转换,在左侧的 核心对象 标签下选择 输入 下的 表输入,双击添加到右侧的转换面板,再选择 作业 下的 复制记录到结果 ,双击添加到右侧的转换面板。新建转换,在左侧的 核心对象 标签下选择 作业 下的 从结果获取记录,双击添加到右侧的转换面板,再选择 作业 下的 设置变量 ,双击添加到右侧的转换面板。

u014061745的博客 1341

STL常用容器—set容器

整理总结C++ STL set容器的概念、创建、基本操作与案例

weixin_46216674的博客 4419

S32K144之芯片锁死解锁——关闭debug端口

S32K144之芯片锁死及解锁 经常捣鼓单片机就会发现,时常会因为某些操作不当导致芯片锁死情况的发生,通过Jlink我们可以读到芯片的ID,但是无法进行Debug,这很是让人苦恼。 基于S32K144的芯片锁死,一般有如下几种可能: 1、时钟配置异常,过高的配置时钟频率以及不配置时钟,都有可能造成芯片保护锁死,我就曾经因为不注意把时钟配置代码注释掉,导致芯片锁死。 2、我是微软雅黑烧写断电,如果在...

weixin_41935674的博客 1万+

关于StartAI本地部署相关问题解答

很多小伙伴们都有接入自己本地SD的需求,对此小编整理了一些相关问题~

HDJ9387的博客 940

STL容器和一些常用的函数

利用第一种构造函数创建对象时,输入字符串后直接进行字符串拼接,而第二种构造方式,在进行字符串拼接时,首先把原本的字符串覆盖掉,之后再进行拼接。前置常识:A.begin(),A.end()是指从begin到end-1位置。表示在begin和end内是否存在num,是返回true,否返回false。求当前排列的下一个排列,如果没有下一个排列返回false,否则返回true。求当前排列的上一个排列,如果没有上一个排列返回false,否则返回true。注意:fabs()是cmath中的函数,求浮点数的绝对值。

victor_hq的博客 2196

使用 YOLO26 的牙科全景X光片分析:从牙齿检测到疾病诊断

从数据预处理自动化、模型架构针对性优化到基于视觉特征的性能分析。它证明了在医学图像分析中,模型架构的进步(如YOLO26的特性)可以有效缓解数据不平衡和目标微小的问题,为临床自动化诊断提供了一个高效、可靠的解决方案。Python"""全局配置模块包含数据集路径、类别名称、论文复现参数、划分比例等常量"""import os# ==================== 路径配置 ====================

u012133341的博客 102

C++ STL set容器常用用法

set是STL中一种标准关联容器。它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。set,顾名思义是“集合”的意思,在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection),差(set_difference) 并(set_union),对称差(set_symmetric

CerberuX's Life 3万+

高速信号设计中的关键测试项目与测试仪器详解

高速信号设计是一个多维度协同优化的系统工程。时域分析如同外科手术刀般精准定位物理缺陷,频域分析提供传输通道的频谱指纹,信号质量评估量化系统鲁棒性,接收端容限测试验证极端工况下的可靠性,协议一致性确保生态互操作性,而电源完整性则直指诸多信号问题的根源。

u014344410的博客 217

ADRC自抗扰PD+ESO控制(博途SCL源代码)

文章浏览阅读119次。线性自抗扰控制(LADRC)系统算法框图-优快云博客文章浏览阅读335次。NLADRC自抗扰控制从Simulink仿真到PLC控制实现_自抗扰控制器 simulink仿真-优快云博客本文介绍了如何将ADRC自抗扰控制算法从Simulink仿真应用到PLC控制中,包括Simulink框图、TD微分器模型、MATLAB函数的使用、SCL控制代码,以及非线性状态误差反馈控制率的实现。ADRC自抗扰PD+ESO控制(CODESYS测试+完整ST代码)-优快云博客。

RXXW_Dor的博客 1316

【C++】STL 容器 - multiset 容器 ( std::multiset 容器简介 | std::multiset 容器 常用操作 api 简介 )

一、mulset 容器 1、std::multiset 容器简介 2、代码示例 - multiset 容器 二、std::multiset 容器 常用操作 api 简介 1、常用 api 简介 2、代码示例 - multiset 容器常用操作

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 5572

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

STL — 常用容器

2 STL — 常用容器 2.1 string容器 2.1.1 string基本概念 本质: string是C++风格的字符串,而string本质上是一个类 string和char 的区别:* char* 是一个指针 string是一个类,类内部封装了char* ,管理这个字符串,是一个char*型的容器 特点: string类内部封装了很多成员方法 例如:查找find,拷贝copy,删除delete替换replace,插入insert string管理char*所分配的内存,不用担心复制越界和取

weixin_50560109的博客 2355

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

STL常用容器-string容器

/ 从右往左查找str最后一次出现的位置,从pos位置开始查找,pos默认值是npos,npos是string类的静态常量,值是-1,表示字符串结束;// pos是position位置,代表从0开始的下标,从pos位置开始,将s字符串后面的n个字符拼接到当前的字符串后面;//把字符串s的前n个字符赋给当前的字符串;

m0_74380601的博客 1068

万字长文:C++模板与STL【常用STL容器】

关注博主,随时获取C++的最新技术分享

m0_51574586的博客 1452

STL常用容器详细解析

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

ahuang1900的专栏 4168

STL常用容器总结

必须从一个口数据元素入队,另一个口数据元素出队。能随机存取,不支持遍历1.采用动态存储分配,不会造成内存浪费和溢出2.链表执行插入和删除操作十分方便,修改指针即可,不需要移动大量元素3.链表灵活,但是空间和时间额外耗费较大。

折翼孤雁 1124
上一篇: 用gdb调试C与C++程序
下一篇: RTTI、虚函数和虚基类的实现方式、开销分析及使用指导
雪岢奇
博客等级 码龄17年 310粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值