STL map的使用方法 关键字: stl map 用法 一 map内部数据的组织 map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。 二 map的构造函数 map共提供了6个构造函数,这块涉及到内存分配器这些东西,略过不表,在下面我们将接触到一些map的构造方法,这里要说下的就是,我们通常用如下方法构造一个map: Map mapStudent; 三 数据的插入 在构造map容器后,我们就可以往里面插入数据了。这里讲三种插入数据的方法: 第一种:用insert函数插入pair数据,下面举例说明(以下代码虽然是随手写的。在VC下请加入这条语句,屏蔽4786警告 #pragma warning (disable:4786) ) Map mapStudent; mapStudent.insert(pair(1, “student_one”)); mapStudent.insert(pair(2, “student_two”)); mapStudent.insert(pair(3, “student_three”)); map::iterator iter; for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++) 第二种:用insert函数插入value_type数据,下面举例说明 Map mapStudent; mapStudent.insert(map::value_type (1, “student_one”)); mapStudent.insert(map::value_type (2, “student_two”)); mapStudent.insert(map::value_type (3, “student_three”)); map::iterator iter; for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++) cout<first<<” ”<second< mapStudent; mapStudent[1] = “student_one”; mapStudent[2] = “student_two”; mapStudent[3] = “student_three”; 区别:第一种和第二种在效果上是完成一样的,用insert函数插入数据,在数据的插入上涉及到集合的唯一性这个概念,即当map中有这个关键字时,insert操作是插入数据不了的;但是用数组方式就不同了,它可以覆盖以前该关键字对应的值,用程序说明 mapStudent.insert(map::value_type (1, “student_one”)); mapStudent.insert(map::value_type (1, “student_two”)); 验证插入的成功性:上面这两条语句执行后,map中1这个关键字对应的值是“student_one”,第二条语句并没有生效,那么这就涉及到我们怎么知道insert语句是否插入成功的问题了,可以用pair来获得是否插入成功,通过pair的第二个变量来知道是否插入成功,它的第一个变量返回的是一个map的迭代器,如果插入成功的话Insert_Pair.second应该是true的,否则为false。 程序如下 Pair::iterator, bool> Insert_Pair; Insert_Pair = mapStudent.insert(map::value_type (1, “student_one”)); Map mapStudent; Pair::iterator, bool> Insert_Pair; Insert_Pair = mapStudent.insert(pair(1, “student_one”)); if(Insert_Pair.second == true) { Cout<<”Insert Successfully”<::reverse_iterator iter; for(iter = mapStudent.rbegin(); iter != mapStudent.rend(); iter++) { Cout<first<<” ”<second<(1, “student_one”)); mapStudent.insert(pair(2, “student_two”)); mapStudent.insert(pair(3, “student_three”)); map::iterator iter; iter = mapStudent.find(1); if(iter != mapStudent.end()) { Cout<<”Find, the value is ”<second<second<second<::iterator, map::iterator> mapPair; mapPair = mapStudent.equal_range(2); if(mapPair.first == mapPair.second) { cout<<”Do not Find”<::iterator iter; iter = mapStudent.find(1); mapStudent.erase(iter); //如果要删除1,用关键字删除 Int n = mapStudent.erase(1);//如果删除了会返回1,否则返回0 //用迭代器,成片的删除 //一下代码把整个map清空 mapStudent.earse(mapStudent.begin(), mapStudent.end()); //成片删除要注意的是,也是STL的特性,删除区间是一个前闭后开的集合 八. 其他一些函数用法 这里有swap,key_comp,value_comp,get_allocator等函数,感觉到这些函数在编程用的不是很多,略过不表,有兴趣的话可以自个研究 六. 排序 这里要讲的是一点比较高深的用法了,排序问题,STL中默认是采用小于号来排序的,以上代码在排序上是不存在任何问题的,因为上面的关键字是int型,它本身支持小于号运算,在一些特殊情况,比如关键字是一个结构体,涉及到排序就会出现问题,因为它没有小于号操作,insert等函数在编译的时候过不去,下面给出两个方法解决这个问题 第一种:小于号重载,程序举例 Typedef struct tagStudentInfo { Int nID; String strName; bool operator < (tagStudentInfo const& _A) const { //这个函数指定排序策略,按nID排序,如果nID相等的话,按strName排序 If(nID < _A.nID) return true; If(nID == _A.nID) return strName.compare(_A.strName) < 0; Return false; } }StudentInfo, *PStudentInfo; //学生信息 第二种:仿函数的应用,这个时候结构体中没有直接的小于号重载,程序说明 Typedef struct tagStudentInfo { Int nID; String strName; }StudentInfo, *PStudentInfo; //学生信息 Classs sort { Public: Bool operator() (StudentInfo const &_A, StudentInfo const &_B) const { If(_A.nID < _B.nID) return true; If(_A.nID == _B.nID) return _A.strName.compare(_B.strName) < 0; Return false; } }; Int main() { //用学生信息映射分数 MapmapStudent; StudentInfo studentInfo; studentInfo.nID = 1; studentInfo.strName = “student_one”; mapStudent.insert(pair(studentInfo, 90)); studentInfo.nID = 2; studentInfo.strName = “student_two”; mapStudent.insert(pair(studentInfo, 80)); } 十. 另外 由于STL是一个统一的整体,map的很多用法都和STL中其它的东西结合在一起,比如在排序上,这里默认用的是小于号,即less<>,如果要从大到小排序呢,这里涉及到的东西很多,在此无法一一加以说明。 还要说明的是,map中由于它内部有序,由红黑树保证,因此很多函数执行的时间复杂度都是log2N的,如果用map函数可以实现的功能,而STL Algorithm也可以完成该功能,建议用map自带函数,效率高一些。 下面说下,map在空间上的特性,否则,估计你用起来会有时候表现的比较郁闷,由于map的每个数据对应红黑树上的一个节点,这个节点在不保存你的数据时,是占用16个字节的,一个父节点指针,左右孩子指针,还有一个枚举值(标示红黑的,相当于平衡二叉树中的平衡因子)。
相关推荐
电影台词预测类型:NLP小样本多标签分类实战
电影类型预测本质上是短文本语义建模问题,核心在于从高度碎片化、低语义密度的台词(平均仅12.7词)中挖掘隐含的类型学编码规则。其技术难点在于:需应对省略主语、倒装、拟声词等非规范表达;处理Drama与Comedy等类型强共现的多标签耦合;并克服领域迁移障碍——维基文本预训练模型在台词上性能骤降0.11。解决方案聚焦RoBERTa微调、类型感知注意力机制与标签平滑策略,兼顾小样本鲁棒性与业务可解释性,广泛适用于影视元数据标注、智能推荐系统及NLP教学实践。
VS2010 STL hashmap
版本是 V5.20:0009 hashmap继承于_Hash,基本所有实现都是对于_Hash得封装。这里主要是阅读一下_Hash的代码流程。 首先是hash_map声明 template<class _Kty, class _Ty, class _Tr = hash_compare >, class _Alloc = allocator > > class hash_ma
Ansys Lumerical 启动时出现 Error: Could not connect to Ansys license server specified at 1055@ 的另一种解决办法
昨天在关闭了中之后 就能正常打开 FDTD 了,结果今天想开启出现了同样的报错:我猜测昨天能启动的原因在于关闭之后要重启电脑,并且在重启之后我第一时间打开 lumerical 测试因此端口没有被占用,今天是在电脑启动之后一段时间才打开所以又遇到了端口占用的问题。
零基础都能看懂的 STL map 详解
???? 作者:Linux猿 ???? 简介:优快云博客专家????,C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊! ???? 关注专栏:C/C++面试通关集锦(优质好文持续更新中……)???? map 在编程中是经常使用的一个容器,本文来讲解一下 STL 中的 map,赶紧来看下吧! 一、什么是 map ? map 是具有唯一键值对的容器,通常使用红黑树实现。 map 中的键值对是 key value 的形式,比如:每个身份证号对应一个人名(反过来不成立哦!),其中,身份证号就
全面讲解电子齿轮比与脉冲数计算
什么是编码器分辨率。
接口调试必看:status显示canceled的3种常见原因及修复方法
本文深度解析了接口调试中status显示canceled的三种核心原因:网络层中断(如请求超时)、应用层逻辑主动取消(如请求竞态、组件卸载)以及用户交互与浏览器行为。文章提供了从诊断到修复的系统性方案,包括分析Network Timing、使用Axios CancelToken、优化请求策略与性能,帮助开发者从根本上解决这一常见问题。
STL —— map用法及实例详解(超详细完整)
文章目录map的基本性质STL —— map的用法 map的基本性质 STL —— map的用法
避坑指南:Python模拟抖音扫码登录时,那些你可能会遇到的‘Referer’和‘Token’校验问题
本文深入解析Python模拟抖音扫码登录时常见的Referer校验与Token失效问题,提供五大陷阱的解决方案。从动态fp参数生成到Referer校验策略,再到Token生命周期管理,手把手教你破解抖音登录接口的反爬机制,助力开发者高效完成自动化登录。
【C++】手把手教你看懂的 STL map 详解(超详细解析,小白一看就懂!!)
【map】是STL中的容器之一,不同于普通容器,它的查找速度极快,常用来存储各种经常被检索的数据,因为容器的底层是【红黑树】。除此之外,还可以借助其特殊的性质,解决部分难题。
用HFSS仿真平面线圈的电感量
平面线圈是指在平面上绕制而成的线圈,如PCB上的电感线圈、无线供电使用的金属丝绕制而成的线圈等。根据线圈的不同形状可将平面线圈分为方形线圈,六角形线圈、八角形线圈、螺旋原型线圈等。
统信UOS系统盘空间不足?5分钟搞定扩容的图形化解决方案
本文提供统信UOS系统盘空间不足的图形化扩容解决方案,使用GParted分区编辑器在不丢失数据的情况下快速完成扩容。详细步骤包括准备工作、空间调整和执行验证,适合技术用户快速解决问题。
STL容器之map类
STL容器之map类
AppStore逆向分析(登录、查询、下单)
某网站全协议流程逆向与分析(自动登录、激活、查询、下单)
STL之map的使用方法
map的元素都是“实值/键值”所形成的一个对组。每个元素都有一个键,是排序的准则。每个键只能出现一次,不允许重复使用。map可以被视为关联式数组,也就是具有任意索引型别的数组。map就是一种红黑树的K,V模型 关于STL中map的使用方法:1、关于map迭代器的使用 这些迭代器迭代器的使用和set中迭代器的使用类似#include<iostream> #include<stdlib.h> #
win10 跳过U8环境检测的IE WebControls.rar
win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。
Data-Structures-and-Algorithm-Analysis-in-Java.pdf
作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...
STL map的使用方法
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义...
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
正确使用stl map的erase方法
正确使用stl map的erase方法 先声明:下面的文章是针对windows的用法,因为std::map的erase函数的windows的实现版本是返回一个std::map的迭代器,但是STL标准里面的该函数的返回值确是: map.erase有3个重载: void erase ( iterator position ); size_type erase ( const k
jre9下载 jdk9
(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】
C++ STL中map方法的简单使用
C++ STL中map方法的简单使用新建map格式输出map形式查找元素删除元素。
STL MAP四种插入方法
方法一:pair 例: map<int, string> mp; mp.insert(pair<int,string>(1,"aaaaa")); 方法二:make_pair 例: map<int, string> mp; mp.insert(make_pair<int,string>(2,"bbbbb")); 方法三:valu...
stl中map的四种插入方法总结
stl中map的四种插入方法总结 方法一:pair 例: map mp; mp.insert(pair(1,"aaaaa")); 方法二:make_pair 例: map mp; mp.insert(make_pair(2,"bbbbb")); 方法三:value_type 例: map mp; mp.insert(map::value_type(3,"ccccc"));
C++ STL Map常用方法详解
6.4 map的常用用法详解 map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器) 1. map的定义 map<typename1, typename2> mp; 注:如果是字符串到整型的映射,必须使用string而不能用char数组 2. map容器内元素的访问 (1). 通过下标访问 和访问普通的数组是一样的 #include <bits/stdc++.h> #include <map> using namespa
在STL中,map按值来排序的实现方法
在STL中,map按值来排序的实现方法 在STL中,map按值来排序的实现方法_永不言弃是生命的基调!_百度空间在STL中,map按值来排序的实现方法在STL中,map是按键来排序的,但很多时候需要按值来排序。一种方法是将map转化为vector,然后排序。too...
10、STL中的unordered_map使用方法
这个是常用的类型。要熟悉特性。它的迭代器是前向的,只能++,不能--
STL中map的operator[ ]使用方法
在STL中,map是一个关联式容器,它提供一对一的数据处理能力,即其中每一个元素都是一个键值对,通过一个唯一的关键字,可以唯一映射到对应的数据值。而map中重载了下标运算符[],通过下标操作,开发人员可以很方便地根据关键字获取到对应的值。虽然使用方便,但是还是有一些地方容易出现问题,值得大家的注意。 下面代码的输出结果会什么呢? [cpp] view
C++ STL中map、set概念及使用方法小结
1. 关联容器简介: STL标准模板库(Standard Template Library)是惠普实验室开发的一系列软件的统称。 STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)、iterator(迭代器)。 容器类可分为:序列式容器(sequence containers)、关联式容器(associative containers)。 序列式容器 包括: vector、list、deque、stack、queue、heap、priority_queue、slist 等
290



被折叠的 条评论
为什么被折叠?



