C++中的-map和set

1. 关联式容器
2. 键值对
3. 树形结构的关联式容器
1. 关联式容器
在初阶阶段,我们已经接触过 STL 中的部分容器,比如: vector list deque
forward_list(C++11) 等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面
存储的是元素本身。那什么是关联式容器?它与序列式容器有什么区别?
关联式容器 也是用来存储数据的,与序列式容器不同的是,其 里面存储的是 <key, value> 结构的
键值对,在数据检索时比序列式容器效率更高
2. 键值对
用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量 key value key
表键值, value 表示与 key 对应的信息 。比如:现在要建立一个英汉互译的字典,那该字典中必然
有英文单词与其对应的中文含义,而且,英文单词与其中文含义是一一对应的关系,即通过该应
该单词,在词典中就可以找到与其对应的中文含义。
SGI-STL 中关于键值对的定义:
3. 树形结构的关联式容器
根据应用场景的不桶, STL 总共实现了两种不同结构的管理式容器:树型结构与哈希结构。 树型结
构的关联式容器主要有四种: map set multimap multiset 。这四种容器的共同点是:使
用平衡搜索树 ( 即红黑树 ) 作为其底层结果,容器中的元素是一个有序的序列。下面一依次介绍每一
个容器。
template < class T1 , class T2 >
struct pair
{
typedef T1 first_type ;
typedef T2 second_type ;
T1 first ;
T2 second ;
pair (): first ( T1 ()), second ( T2 ())
{}
pair ( const T1 & a , const T2 & b ): first ( a ), second ( b )
{}
};
3.1 set
3.1.1 set 的介绍
翻译:
1. set 是按照一定次序存储元素的容器
2. set 中,元素的 value 也标识它 (value 就是 key ,类型为 T) ,并且每个 value 必须是唯一的。
set 中的元素不能在容器中修改 ( 元素总是 const) ,但是可以从容器中插入或删除它们。
3. 在内部, set 中的元素总是按照其内部比较对象 ( 类型比较 ) 所指示的特定严格弱排序准则进行
排序。
4. set 容器通过 key 访问单个元素的速度通常比 unordered_set 容器慢,但它们允许根据顺序对
子集进行直接迭代。
5. set 在底层是用二叉搜索树 ( 红黑树 ) 实现的。
注意:
1. map/multimap 不同, map/multimap 中存储的是真正的键值对 <key, value> set 中只放
value ,但在底层实际存放的是由 <value, value> 构成的键值对。
2. set 中插入元素时,只需要插入 value 即可,不需要构造键值对。
3. set 中的元素不可以重复 ( 因此可以使用 set 进行去重 )
4. 使用 set 的迭代器遍历 set 中的元素,可以得到有序序列
5. set 中的元素默认按照小于来比较
6. set 中查找某个元素,时间复杂度为: $log_2 n$
7. set 中的元素不允许修改 ( 为什么 ?)
8. set 中的底层使用二叉搜索树 ( 红黑树 ) 来实现。
3.1.2 set 的使用
1. set 的模板参数列表

 

 

 

3.2 map
3.2.1 map 的介绍
翻译:
1. map 是关联容器,它按照特定的次序 ( 按照 key 来比较 ) 存储由键值 key 和值 value 组合而成的元
素。
2. map 中,键值 key 通常用于排序和惟一地标识元素,而值 value 中存储与此键值 key 关联的
内容。键值 key 和值 value 的类型可能不同,并且在 map 的内部, key value 通过成员类型
value_type 绑定在一起,为其取别名称为 pair:
typedef pair<const key, T> value_type;
3. 在内部, map 中的元素总是按照键值 key 进行比较排序的。
4. map 中通过键值访问单个元素的速度通常比 unordered_map 容器慢,但 map 允许根据顺序
对元素进行直接迭代 ( 即对 map 中的元素进行迭代时,可以得到一个有序的序列 )
5. map 支持下标访问符,即在 [] 中放入 key ,就可以找到与 key 对应的 value
6. map 通常被实现为二叉搜索树 ( 更准确的说:平衡二叉搜索树 ( 红黑树 ))
3.2.2 map 的使用
1. map 的模板参数说明

 

 

 5. map中元素的修改

 

Kurumi Tokisaki
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C++---mapset的使用
qq_47406941的博客
05-24 396
一、基础知识 1、序列式容器和关联式容器 序列式容器:底层是线性数据结构,且存储的是元素本身,称为序列式容器。例如:vector string list deque等。 关联式容器:底层数据结构存储的是<key,value>的键值对,在数据检索时比序列是容器效率更高。 2、键值对 用来表示具有一一对应关系的一种结构,该结构一般只包含两个成员变量key和value,key代表键值,value表示与key对应的信息。 键值对的定义: template <class T1, cl
C++ mapset
XHumble的博客
07-01 180
序列式容器与关联式容器 C++容器分为序列式容器和关联式容器,序列式容器比如:vector list deque 等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构(顺序表),里面存储的是元素本身,这一点和关联式容器不同,关联式容器存储的是<key , value>结构的键值对,对数据的检索时比序列式容器效率更高。 什么是键值键值对是用来表示一一对应关系的一种结构,该结构一般只包含两个成员变量key和value,key代表键值value表示与key对应的信息 SGI-ST
C++】关联式容器——mapset、multimap、multiset
m0_46613023的博客
07-30 206
关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key, value>结构的键值对,在数据检索时比序列式容器效率更高。 STL总共实现了两种不同结构的管理式容器: 树型结构 哈希结构 树型结构的关联式容器主要有四种:mapset、multimap、multiset。 这四种容器的共同点是:底层使用平衡搜索树(即红黑树),容器元素是一个有序的序列。 set特点: set是按照一定次序存储元素的容器,默认升序,使用set的迭代器遍历set元素,可以得到有序序列 s
进阶C++__STL__set/ multisetmap/ multimap使用方法
qq_61386381的博客
08-21 816
一、关联式容器 二、键值对 三、树形结构的关联式容器 set/ multiset 容器 set基本概念 set构造和赋值 set大小和交换 set插入和删除 set查找和统计 set和multiset区别 set / multiset总结 pair对组创建 set容器排序 内置类型指定排序规则 自定义数据类型指定排序规则 map/ multimap容器 map基本概念 map构造和赋值 map大小和交换 map插入和删除 map查找和统计 map容器排序 map
浅谈C++容器
dearwind153的专栏
04-10 593
什么是容器 首先,我们必须理解一下什么是容器,在C++ 容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对象,当然这是一个朴素的理解,这种“对象”还包含了一系列处理“其它对象”的方法,因为这些方法在程序的设计上会经常被用到,所以容器也体现了一个好处,就是“容器类是一种对特定代码重用问题的良好的解决方案”。
树形结构关联式容器(mapset,multiset和multimap)
weixin_57023347的博客
09-02 708
目录 一.容器介绍 二.键值对 三.树形结构关联式容器 3.1 set 3.1.1 set介绍 3.1.2 set的使用 3.2 map 3.2.1 map介绍 3.2.2 map使用 3.2.2 mapoperator[]原理 3.2.3 用map记录次数 3.3multiset 3.3.1 multiset介绍 3.3.2 multiset使用 3.4 multiamp 3.4.1 multimap介绍 3.4.2使用 一.容器介绍 STL容器主要分为序列式容..
关联容器总结
weixin_44570570的博客
08-20 914
第11章 关联容器 一. 使用关联容器 1. 关联容器概述 关联容器共有两大类,一种是map,另一种是setmap是关键字-值对的集合,其实我更愿意称其为键值对的集合,map也称做 关联数组 ,只是和数组不一样的是数组的下标是整数,而map的下标是关键字,不一定是整数。 set是关键字的简单集合,可以理解为是一种只有关键字而没有值的map。 注意,map整个系列(map和multimap等)的头文件就是mapset整个系列(set和multiset等)头文件是set。 2. 简单使用mapset v
mapset的模拟实现
最新发布
06-06
封装红黑树,模拟SLT源码实现,封装出mapset
c++容器list、vector、mapset区别与用法详解
08-19
主要介绍了c++容器list、vector、mapset区别与用法详解,文通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
c++实现一个快速哈希映射和哈希集使用robin hood哈希- Tessil/robin-map
01-27
c++实现一个快速哈希映射和哈希集使用robin hood哈希- Tessil/robin-map-源码
mapset的异同
09-28
mapset的异同mapset的异同mapset的异同mapset的异同
关联式容器面试题合集
didi1663478999的博客
10-02 840
说说你所知道的容器都有哪些? vector,list,mapset,mulimap,muliset等等 mapset的区别?使用map有哪些优势? map的底层原理,说下红黑树? map的迭代器会失效吗?什么情况下会失效? AVLTree和RBTree的对比,为什么map使用了红黑树?红黑树的优势是什么? AVLTree和RBTree所达到的平衡有什么区别? ...
C++:4个关联式容器的剖析
AngelDg的博客
04-20 403
@TOC 关联式容器 我们已经接触过STL的部分容器,比如:vector、list、deque、forward_list(C++11)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。那什么是关联式容器?它与序列式容器有什么区别? 关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key, value>结构的键值对,在数据检索时比...
C++学习18:C++关联容器-set与multisetmap与multimap
12-09 407
C++关联容器学习:set与multisetmap与multimap
4-1 C++ 的关联式容器
chumingqian的博客
04-18 391
在《C++ STL容器》一节讲到,C++ 容器大致分为 2 类,即序列式容器和关联式容器。其,序列式容器(包括 array、vector、list、deque 和 forward_list)已经在前面章节做了详细的介绍,从本节开始,将逐个对 C++ STL 标准库的所有关联式容器做详细的讲解。 提到 C++ STL 关联式容器,读者可能会以下一些疑问: 关联式容器是什么,具有哪些特点? 和序列式容器相比,关联式容器有什么不同? 关联式容器的种类有哪些? 别急,读完本文,这些疑问都会迎刃而解。 C++
关联式容器(setmap
田怼怼的博客
03-01 276
STL容器分为序列式容器、关联式容器、容器适配器,具体分类如下图: 关联式容器 关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是**<key, value>结构的键值对**,在数据检索时比序列式容器效率更高。 键值对:用来表示具有一一对应关系的一种结构,该结构一般只包含两个成员变量key和value,key代表键值,value表示与key对应的信息。 树形结构的...
关联式容器
hello呀!
09-03 513
关联式容器是用来存储数据的,与序列式容器不同的是,其存储的是<key, value>结构的键值对,在数据检索时比序列式容器效率更高。 键值对 用来表示具有一一对应关系的结构,该结构一般只含两个成员变量key和value,key代表键值,value表示与key对应的信息。 比如:现在要建立一个英汉互译的字典,那该字典必然有英文单词与其对应的文含义,而且,英文单词与其文含义是一一对...
STL详解(十)—— setmap、multiset、multimap的介绍及使用
2021dragon的博客
11-27 5513
文章目录关联式容器键值对树形结构的关联式容器setset的介绍set的使用mapmap的介绍map的使用multisetmultiset的介绍multiset的使用multimapmultimap的介绍multimap的使用总结 关联式容器 键值对 树形结构的关联式容器 set set的介绍 set的使用 map map的介绍 map的使用 multiset multiset的介绍 multiset的使用 multimap multimap的介绍 multimap的使用 总结 ...
c++ map/multimap,set/multiset的用法及比较
qq_38353700的博客
06-15 1612
一,相关介绍 map/multimap,set/multiset都为c++的标准容器,它们的底层都是用红黑树实现的,因此在进行查询,修改,删除等操作上具有很高的效率,可以达到O(logN)。 那么它们的区别是什么呢? 1,其map/multimap是kay-value结构,意思为它存储的是一对数据,其kay为关键字信息,而value为相应的键值;而set/multiset为kay结构,
C++mapset的区别
05-24
C++mapset都是关联容器,但它们的实现方式和用途不同。 1. map map是一种关联式容器,其元素键值对(key-value pair),每个元素都包含一个键和一个值。键是唯一的,而值则可以重复。map内部实现使用...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 扫雷游戏的简易制作 2903
  • 关于猜数字中随机数的产生 2336
  • 重定向的实现原理 398
  • 好的代码需要好的敲代码习惯 299
  • 文件描述符fd 253

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • C++中的二叉树问题(二叉树进阶)
  • 关于多态的基础理解
  • C++中的继承
2022年28篇
2021年1篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司阿里营销网站价格企业网站建设公司晋城seo网站推广中卫模板制作报价台州高端网站设计公司九江网站制作设计价格坂田seo网站优化辽源SEO按效果付费推荐大庆百度seo推荐湘西网站设计模板哪家好徐州阿里店铺运营哪家好布吉网站建设报价盐田高端网站设计推荐铜陵阿里店铺运营多少钱吉安网站推广工具多少钱大芬关键词排名报价荷坳网页设计公司新乡企业网站制作公司临沂优秀网站设计推荐哈尔滨至尊标王多少钱渭南seo网站优化推荐泉州网站优化排名多少钱昌吉网站优化按天收费推荐台州百姓网标王多少钱北海网站定制价格大鹏建网站哪家好温州网站推广工具罗湖外贸网站设计阳江网站推广方案多少钱石家庄seo多少钱歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化