浅谈STL中的map

双目相机立体匹配算法概述(含Python代码) 立体匹配任务是计算机视觉中的一个重要问题,旨在从一对具有相同场景的图像中估计每个像素的视差(disparity)。本文对现有的传统算法和深度学习算法进行了综述,以便于各位选择合适的立体匹配算法用于深度估计或三维建模。 阅读详情

引言:

c++因为有了STL库所以变得比c语言简单了许多,许多容器不需要自己实现,但是自己必须要熟悉掌握。在STL中有各种你想要的容器及函数,在解决问题中用恰当的容器和函数会有事半功倍的效果。今天就要介绍一下c++最常用的容器之一map的相关操作。

什么是map?

map和vector不一样,vector是序列容器,而map是通过名称来寻找地址的。虽然序列容器是管理数据的宝贵工具,但对大多数应用程序而言,序列容器不提供方便的数据访问机制,这时候map 容器就提供了一种更有效的存储和访问数据的方法。

map 容器是关联容器的一种。在关联容器中对象的位置取决于和它关联的键的值。键可以是基本类型,也可以是类类型。(和python中的字典类似)。

如何使用:

#include<map>
using namespace std;

map的创建:

//创建一个空的map
map<int,int> mp;
//创建带有初始化的map
map<int,int> mp{{1,2},{3,4}};
//复制已有的map
map<int,int> mp1(mp);
//复制已有的map的部分
map<int,int> mp1(mp.begin(),mp.end());
//

map的插入:

//用insert函数进行插入数据(如果key在map中已存在,则不会再插入)
mp.insert(pair(1,2));
//用数组方式插入数据(如果key在map中已存在,则更新之)
mp[1]=2;

map的遍历:

//正向迭代器遍历
map<int,int>::iterator iter;
for(iter=mp.begin();iter!=mp.end();iter++)
{
	cout<<iter->first<<" "<<iter->second<<endl;
}
//反向迭代器遍历
map<int,int>::reverse_iterator iter;
for(iter=mp1.rbegin();iter!=mp1.rend();iter++)
{
	cout<<iter->first<<" "<<iter->second<<endl;
}
//for循环遍历
for(auto p:mp)
{
	cout<<p.first<<" "<<p.second<<endl;
}

判断map是否为空:

mp.empty();

获得map的大小:

//获得map的当前大小
mp.size();
//获得map的最大容纳量
mp.max_size()

删除元素:

//删除first为key的元素
mp.erase(key)
//删除迭代器iter指向的元素
mp.erase(iter);
//删除所有元素
mp.clear();

其他操作:

//查找first值为key的元素
mp.find(key);
//交换两个map
swap(mp1,mp2);
//查找map中first值为key的元素个数
mp.count(key);  //返回0或1
//查找第一个first值>=key的第一个元素位置
iter=mp.lower_bound(key);
//查找第一个first值>key的第一个元素位置
iter=mp.upper_bound(key);

总结:

笔者也是初学map,这篇博客即为我初学笔记。本文一定有很多遗漏知识点,我会再深入学习之后再 添加,另外,本文若有不对之处,望读者不吝赐教。

HTML蓝色动态爱心(完整代码) HTML语言实现蓝色动态爱心的完整代码。 阅读详情

相关推荐

微信支付V2,jsapi支付拉起收银台报错:调用支付JSAPI缺少参数:total_fee

拉起收银台报错

m0_54355172的博客 3873

Map容器中几种常用的基本操作

目录 Map容器的基本操作 Map是什么? 自定义数据类型作为”键”并且进行自定义排序 根据上面的例子说明“如何进行自定义排序”? 无论是哪种容器,自定义数据类型应该注意什么? Map容器的初始化 Map容器中元素的插入 Multimap容器中首个不重复的“键”查找 Map和multimap容器中compare函数句柄的使用 Map容器的最大容量(map容器最多可以装多少元素) map容器中元素的删除操作 Map容器中的find函数 Multimap中查找有多少个重复值的count

超级霸霸强的博客 3175

DAC8568 Controller

DAC8568 ControllerDAC8568 简介串行接口三级目录 DAC8568 简介 PIN Description Name Description LDAC‾\overline{LDAC}LDAC load DACs SYNC‾\overline{SYNC}SYNC 低电平有效,电平触发控制, 该输入为输入数据的帧同步信号. 当SYNC为低,使能DAC内输入移位寄存器,并在随后的所有时钟沿采样数据。 在第32个时钟之后,DAC更新输出。 若不到32个时钟SYNC被置高(即

u010170039的博客 5134

详解C++STL容器系列(三)—— map属性和方法详解

目录一、map介绍二、map的属性和方法iteratorscapacityElement accessModifiersOperations三、map的具体用法3.1 iterator(迭代器访问)3.2 capacity(容量)3.3 Element access(下标访问)3.4 Modifiers(修改器)3.4.1 insert3.4.2 erase3.4.3 swap3.4.4 clear3.4.5 emplace3.4.6 emplace_hint3.5 Operations(操作)3.5.1

aruewds的博客 2578

最全中文停用词表(可直接复制)

最全的停用此表整理 词表名 词表文件 中文停用词表 cn_stopwords.txt 哈工大停用词表 hit_stopwords.txt 百度停用词表 baidu_stopwords.txt 机器智能实验室停用词库 scu_stopwords.txt 以上停用词表链接:https://github.com/goto456/stopwords 以下是我常用的1893个停用词,可直接复制 ! " # $ % & ' ( ) * + , - -- . .. ... ....

dilifish的博客 12万+

从零开始:使用Mask2Former训练你的专属数据集

本文详细介绍了如何从零开始使用Mask2Former训练自定义数据集。内容涵盖环境搭建、数据准备(将LabelMe格式转换为COCO格式)、数据集注册与模型配置、训练启动与调试,以及最终的模型推理与应用。通过实战步骤和常见问题解决方案,帮助读者掌握使用Mask2Former进行实例分割的核心流程,实现专属模型的训练与部署。

weixin_28678151的博客 459

STL中map取最大最小键值方法(POJ3481)

首先介绍一下STL中map的架构: SGI STL map以红黑树为低层级制,每个节点的内容是一个pair。pair的第一个元素被视为键值(key),第二个元素被视为实值(value)。 那么如何用O(1)的时间去取得最小或者最大的key值相对应的对(注意不是value,因为map是以key值即键值来构建平衡树的)。 下面呈现一个代码: #include #include using

懂幸福,爱生活 1万+

Python程序—定子故障三相永磁同步电动机振动与电流数据集

1.0 kW 电机匝间短路故障数据: 正常匝间短路振动数据: 匝间短路故障,严重度为2.26%: 匝间短路故障,严重度为2.70%: 匝间短路故障,严重度为3.35%: 匝间短路故障,严重度为4.41%: 匝间短路故障,严重度为6.48%: 匝间短路故障,严重度为12.17%: 匝间短路故障,严重度为21.69%1.5 kW 电机匝间短路故障数据: 正常匝间短路振动数据: 匝间短路故障,严重度为1.57%: 匝间短路故障,严重度为1.88%: 匝间短路故障,严重度为2.34%

m0_66465741的博客 1322

map--C++ STL 学习

map–C++ STL 学习   Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力。   说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。 map是使用红黑树实现的,访问、...

weixin_30293135的博客 116

ControlCAN.dll开发适配USBCAN_E/2E_U设备

摘要:本文提供了USBCAN_E/2E_U设备的配置指南:1)安装专用驱动;2)获取最新的ControlCAN.dll文件;3)修改VCI调用顺序,新增VCI_SetReference函数设置波特率;4)使用工具计算波特率配置值,并给出了常见波特率对应的代码参考值(如500K对应0x060007)。配置过程强调使用特定工具计算精确的波特率参数,并提供了相关软件下载链接。

weixin_43969033的博客 392

【Python爬虫教程】第3篇-解决使用reqeusts遇到的ProxyError异常

Python request代理错误提示“HTTPSConnectionPool, Cannot connect to proxy, no such file or directory”

分享技术,记录思考和感悟 1509

C++|STL学习笔记-map的属性(大小以及是否存在)

目录 1.size()的用法 2.多多使用count(xxx)进行判断   1.size()的用法 map的property map属性 1.没有容量; 2.得到元素的个数size()   这里给出调用他size()的例子,源码如下: /***********************************************************************...

IT1995的博客 2万+

Dify 系列教程 | 第 6 篇:工作流入门 -- 用可视化方式编排 AI 逻辑

Dify 工作流是一个基于有向无环图(DAG)的可视化 AI 逻辑编排系统。你可以把多个处理步骤(节点)用连线串联起来,数据从起点流向终点,每经过一个节点就被处理一次。用一个类比来理解:如果单次 Prompt 调用是"一道菜",那工作流就是"一道完整的生产线" – 原材料(输入)进入流水线,经过清洗(预处理)、切配(数据转换)、烹饪(AI 推理)、装盘(格式化输出)等工序,最终产出成品。创建一个工作流类型的应用(或高级聊天类型),就会进入工作流编辑器。编辑器基于ReactFlow构建(

weixin_43674738的博客 121

STL浅谈,从vector到map

本文为C++ STL入门指南,详解vector、stack、map等核心容器的用法与底层原理,助你高效掌握标准模板库!

2401_87687617的博客 707

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

STL浅谈 map

map存储键值对。 map容器的特性是所有元素都会根据键值自动排序,并且所有元素都是pair,拥有键值和实值。pair的第一个元素为键值,第二个元素为实值。map当中不允许存在两个键值相同的元素。 map的底层为RB-tree。 <stl_pair.h>中的pair定义 template <class T1, class T2> struct pair { typede...

q435201823的博客 147

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

浅谈C++|STL之map篇

map不允许容器中有重复key值元素multimap允许容器中有重复key值元素。

m0_73731708的博客 1441

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

c 语言中map用法,浅谈c++中的stl中的map用法详解

Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有...

weixin_42373103的博客 470

STL浅谈 hash_set/hash_map

hash_set和hash_map不属于STL标准,所以一般情况下无法使用,不过C++11中有对应的容器unordered_set和unordered_map。 hash_set hash_set底层机制由hashtable提供,和set一样能够快速搜索元素,但是set元素插入后会自动排序,而hash_set是无序的。 template <class Value, class HashFcn...

q435201823的博客 178

浅谈c++中的stl中的map用法详解

Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有...

qq_36615589的博客 202

[数据结构]浅谈C++ STL 的map和set容器

[数据结构]浅谈C++ STL 的map和set容器    在C++的STL库中,有许多种不同结构、不同用途的容器。容器又可以分为两大类,分别是:     序列式容器(sequence containers) 关联式容器(associative containers) 其中序列式容器包括vector、queue和list等,本文中的map和set属于关联式容器。   先说说set容器,set的

YY_2333的博客 583

面试浅谈之 C++ STL 篇

C++ STL 篇

优质后端技术知识记录 1172

【C++知识】浅谈STL中各种容器

浅谈STL中各种容器 目录 浅谈STL中各种容器 1、STL六大部件 2、容器分类 3、各种容器介绍 vector deque list set/map unordered_map/unordered_set 1、STL六大部件 容器、分配器、算法、迭代器、适配器、仿函数 2、容器分类 Sequence Containers Associative Container...

qq_36417014的博客 484

浅谈STL中的容器

浅谈STL中的容器首先谈谈Vector,我的理解就是动态数组。在存储区域上是连续的。因此可以随机访问,比如说可以直接访问迭代器it+5这样的元素。它在尾位置处插入元素速度很快,但是在任意位置插入元素速度很慢,因为需要把待插入的元素右边的每个元素都拷贝一遍。类似地删除任意一个而不是vector 的最后一个元素效率同样很低。因为待删除元素右边的每个元素都必须被复制一遍这种代价对于大型的复杂的类

scarletty的专栏 713

【STL】C++标准模板库——Map

01、文章目录 目录01、文章目录02、浅谈Map容器03、Map成员方法表04、成员方法演示示例4.1、begin() 02、浅谈Map容器 map是STL的一个关联容器,它提供一对一的hash。 第一个可以称为关键字(key),每个关键字只能在map中出现一次; 第二个可能称为该关键字的值(value); map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。Map主要用于资料一对一映射(one-to-one)的情況,map內部的实现自建一颗红黑树,这颗树具有对数据自动排

Cain Xcy的博客 1103

stl大全

什么是STL? 大佬:为什么C++比C更受人欢迎呢?除了C++ 的编译令人感到更舒适,C++的标准模板库(STL)也占了很重要的原因。当你还在用手手写快排、手写二叉堆,挑了半天挑不出毛病的时候,C++党一手STL轻松AC,想不嫉妒都难。 萌新:STL太酷了吧,快跟我讲讲具体是什么玩意吧! 大佬:STL(Standard Template Library,标准模板库),是惠普实验室开发的一系列软件的统称。现在主要出现在 c++中,但是在引入 c++之前该技术已经存在很长时间了。STL 从广义上分为: 容器(c

qq_51070408的博客 2336

浅谈 STL

简介 STL是Standard Template Library的简称,中文名标准模板库,从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL是C++的一部分,因此不用安装额外的库文件。 ---------来自《百度百科》

Stardust_AK的博客 402
上一篇: 把二叉树转换成树(代码实现)
下一篇: MATLAB中的特殊矩阵
追梦少年ML
博客等级 码龄7年 36粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值