C++ map使用方法

c++ 遍历map的三种方式 1、方法介绍 1.1、基于范围的for循环 for(auto &t : m){ cout<<"key:"<<t.first<<" value:"<<t.second<<endl; } 1.2、普通for循环 for(map<int,string>::iterator iter = m.begin(); iter != m.end(); ++iter){ cout<<"key:"<<ite 阅读详情

map方法总结

map提供一对一的hash,采用key——value键值对,可以是任意类型(包括自定义类型)
头文件
#include<map>

定义一个map对象
map<int,string> mapStudent;

插入数据——数组方式,若已存在键,会覆盖
mapStudent[1] = “student_one”;
插入数据——pair方式,若已存在键,插入失败
pair<map<int, string>::iterator, bool> ret;
ret = mapStudent.insert(pair<int, string>(1, “student_two”));
ret.first ⇒ 1
ret.second ⇒ false (已存在1这个键,返回false)
ret.first -> second ⇒ student_one (本身键的值)

迭代器遍历
map<int,string> ::iterator iter;
for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)
cout << iter->first << ’ ’ << iter->second << end;

map大小
int size = mapStudent.size();
是否存在某键,存在返回1,否则0
int n = mapStudent.count(1);

查找数据
1⃣️直接cout << mapStudent[1]
2⃣️find() 找到则返回指向该关键字的迭代器,否则返回指向end的迭代器
map<int,string> ::iterator iter;
iter = mapStudent.find(1);
if(iter != mapStudent.end())
cout << “Find” << iter->second << endl;

删除元素
1⃣️迭代器删除
map<int,string> ::iterator iter;
iter = mapStudent.find(1);
mapStudent.erase(iter);
2⃣️关键字删除
int n = mapStudent.erase(1); 删除返回1,否则返回0
3⃣️成片删除(前闭后开)
mapStudent.erase(mapStudent.begin(), mapStudent.end());
相当于清空
mapStudent.clear();

排序
默认按键升序排列,因此map是有序的
1⃣️对有序map中的key自定义排序,如按字符串长度

struct CmpByKeyLength {
    bool operator()(const string& k1, const string& k2)const {
        return k1.length() < k2.length();
    }
};
map<string, int, CmpByKeyLength> name_score_map;

2⃣️对有序map中的value排序
把map中的元素放到序列容器(如vector)中,再用sort进行排序

bool cmp(const pair<string, int>& a, const pair<string, int>& b) {
        return a.second < b.second;
}
// 将map中的内容转存到vector中
vector<pair<string, int>> vec(name_score_map.begin(), name_score_map.end());
//对线性的vector进行排序
sort(vec.begin(), vec.end(), cmp);
for (int i = 0; i < vec.size(); ++i)
    cout << vec[i].first << endl;

例题,找出一串数字中出现次数最多的那个数

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <math.h>
#include <iomanip>
#include <map>
using namespace std;

bool cmp(const pair<long long, int>& a, const pair<long long, int>& b) {
    return a.second < b.second;
}
int main(){
    int n;
    cin >> n;
    map<long long, int> box;
    long long ai;
    for(int i=0; i<n; i++){
        cin >> ai;
        if(box.find(ai) != box.end())
            box[ai] += 1;
        else
            box[ai] = 1;
    }

// 将map中的内容转存到vector中
    vector<pair<long long, int>> vec(box.begin(), box.end());
//对线性的vector进行排序
    sort(vec.begin(), vec.end(), cmp);
    cout << vec.rbegin()->first << " " << vec.rbegin()->second << endl;
}

vec.rbegin()代表最后一个元素,end()代表最后元素之后的,为空

【C++STL的map/ multimap容器 cpp】 -- 深入浅出STL容器map和multimap的使用方法 multimap内部采用的也是红黑树,它们之间的主要区别是multimap支持键值的重复性,所以查找元素的复杂度也是O(logn)。接着,我们定义了一个名为myMultiMap的multimap对象,它的键和值都是字符串类型。上面的代码中,我们首先定义了一个名为myMap的map对象,它的键是一个字符串类型,值是一个整型数。我们向这个map中添加了三组数据,然后使用迭代器访问了所有的元素,并输出了它们的姓名和年龄。其中,map和multimap都是非常有用的关联容器,在处理键值对的场景下非常实用。 阅读详情

相关推荐

到底什么是电源的斜波补偿,电源芯片CS引脚作用,一文讲清楚!

上文有提到电流环,其实电流环再细分也有很多模式,用的最多的是峰值电流模式峰值电流模式调节工作原理如下:(1)当输出负载增大时,输出电压降低,因此,Vc 增大,线性增加的电感电流只有升高到更大的值才能使 PWM 电流比较器翻转,开关管导通的时间增长,占空比增加,输入功率增加,因此输出电压增加,当输出电压增加到调节的范围内时,系统保持平衡。

jwgdhuwdhg的博客 1万+

c++中map详解

map简介 map是STL的一个关联容器,以键值对存储的数据,其类型可以自己定义,每个关键字在map中只能出现一次,关键字不能修改,值可以修改;map同set、multiset、multimap(与map的差别仅在于multimap允许一个键对应多个值)内部数据结构都是红黑树,而java中的hashmap是以hash table实现的。所以map内部有序(自动排序),查找时间复杂度为O(logn)。 map用法 1、头文件 #include<map> 2、 ...

weixin_41501074的博客 9万+

用树莓派搭建全功能NAS服务器(01):树莓派基础操作&OMV搭建

写在前面 对于文件互传来说,局域网和云盘的操作总是独立的,而且很难将两者的优势合为一体。如果想要集多种优势为一体,那么NAS应该就是较为完美的解决方案了。 在这个系列中我们尽量跳过一些枯燥的理论知识,专注于说明两件事:   1.NAS是什么&能做什么 2.搭建思路&怎么做   这中间也会涉及到一些方案的选择,同类方案我也会列出来和大家分享我已知的优缺点,有兴趣可以多种尝试。(侧重于软件) 虽然是用树莓派搭建的,但是对于debian linux系统下的NAS搭建有着很好的参

斯塔克家的真维斯的工作间 2万+

C++ map遍历的几种方式

C++ map遍历的几种方式 #include <iostream> #include <unordered_map> using namespace std; int main() { unordered_map<string, int> mp; mp["张三"] = 20; mp["李四"] = 18; mp["王五"] = 30; // 方式一、迭代器 cout << "方式一、迭代器" <&lt

zhangbw's blog 5万+

从零开始做题:big_zip

内容为:You_know_the_bed_feels_warmer_Sleeping_here_alone_You_know_I_dream_in_color_And_do_the_things_I_want_You_think_you_got_the_best_of_me_Think_you_had_the_last_laugh_Bet_you_think_that_everything_good_is_gone。查看压缩包内容,发现有五字节长度的文件,用crc碰撞攻击破解明文。

weixin_44626085的博客 1242

从GitHub到海浪模拟:手把手教你配置WAVEWATCHⅢ 6.07.0的完整开发与测试环境

本文详细指导如何在Ubuntu系统中配置WAVEWATCHⅢ 6.07.0的开发与测试环境,涵盖虚拟机设置、依赖安装、源码编译及案例验证的全流程。通过步骤化教程,帮助科研人员快速搭建高效的海浪模拟平台,提升海洋数值模拟的研究效率。

weixin_42568801的博客 325

C++中map的遍历

一点睛 map数据的遍历,也有3种方法 应用前向迭代器方式 应用后向迭代器方式 应用数组方式 二map反向迭代器的使用实战 1代码 #include <map> #include <string> #include <iostream> using namespace std; int main(){ map<int,strin...

实践求真知 6万+

TI电量计BQ40Z50R2循环学习实战:从量产文件生成到关键标志位解析

本文详细解析了TI电量计BQ40Z50R2的循环学习实战流程,从量产文件生成到关键标志位解析。通过实战案例和易错分析,帮助工程师避开常见陷阱,提升电量计配置效率。重点介绍了循环学习前的准备工作、量产文件生成步骤及关键标志位的深度解读,适用于电池管理系统开发人员。

weixin_30505225的博客 439

C++ map遍历

最近经常遇到map的遍历,我最初查文档查到的办法又长又不好打,然后我学习了一下其他的各种遍历方式。在此记录一下。

qq_59183443的博客 1万+

Python 包安装报错:ERROR: No matching distribution found for xxx 的全面排查指南

本文全面解析Python包安装时常见的`ERROR: No matching distribution found for xxx`报错。从检查包名拼写、网络与镜像源配置,到深入分析Python版本、操作系统等环境兼容性问题,提供了从简到繁的排查步骤。文章还介绍了使用`pip debug`、`-v`参数等高级诊断工具,并给出了更换包管理器、使用Docker等终极解决方案,帮助开发者高效解决依赖安装难题。

p8q9r0的博客 897

流媒体服务软件-LiveNVR channeltree 未授权访问

LiveNVR 能够通过简单的网络摄像机通道配置,将传统监控行业里面的高清网络摄像机 IPCamera、NVR 等具有 RTSP/Onvif 协议输出的设备接入到 LiveNVR,LiveNVR 能够将这些设备源的音/视频数据进行采集、转换、输出,进行全平台终端直播(PC、Android、iOS、微信、H5),并且LiveNVR能够将视频源的直播数据对接到第三方 CDN 网络,实现安防设备互联网级别的直播分发。对channeltree接口加上权限校验。直接访问接口即可获取数据。

iSee857的博客 1040

C++ map中erase方法的使用

C++map中erase方法的使用在不同版本的编译器里面使用不一样,一般性的使用方法如下: //erase方法调用————循环中局部删除某些元素 std::map<int, int> b; b[1] = 5; b[2] = 6; b[3] = 7; b[4] = 8; for (std::map<int, int>::iterator iter = b.begin();...

Magnum的博客 1万+

SAP ABAP SM50 的另类用途 - ABAP 工作进程对数据库表读取操作的检测

今天是2020年五一国际劳动节,Jerry祝大家劳动节快乐。 虽然五一国际劳动节来源于一百多年前国外无产阶级的一次大罢工,但由于国情原因,国内很多行业的从业人员,好像天生就是劳碌命。比如程序员行业。 2014年五一劳动节,我在和一个不是总能重现的SAP CRM incident做斗争。详情参考Jerry之前的文章记一次SAP开发工程师给微软Azure报incident的体验. 当时处理完这个复杂...

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 8678

C++ map使用方法总结

目录 1.概述 2. map的基本操作 2.1插入操作 2.2 取值 2.3. 容量查询 2.4 删除 2.5 查找 2.6 使用举例 3.map基本操作函数总结 1.概述 map是C++标准模板库(STL)中的一种关联式容器。它的特性是,所有元素都会根据元素的键值自动被排序,即map的所有元素都是pair,同时拥有实值(value)和键值(key)。pair的第一个元素被视为键值,第二个元素被视为实值,且不允许两个元素拥有相同的键值。标准的STL map即以RB-tr...

baidu_15952103的博客 2957

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C++中map的使用方法

1,map简介 map是STL的一个关联容器,它提供一对一的hash。 第一个可以称为关键字(key),每个关键字只能在map中出现一次; 第二个可能称为该关键字的值(value); map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。Map主要用于资料一对一映射(one-to-one)的情況,map內部的实现自建一颗红黑树,这颗树具有对数据自动排序的功能。在m...

snowcatvia的博客 389

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C++ map emplace() 函数使用方法及示例

参考:

m0_67401761的博客 1890

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

c++ map、multimap 的使用方法

一、区别 1. Map:一对一;有序( 自动按 key 升序 );可用 [ ] 赋值和取值;采用 红黑树 结构;实现O(lgn)的查找,插入和删除 2. Mulitimap:多对多;有序( 自动按 key 升序 );无[ ] 操作;可自定义排序函数;采用 红黑树 结构 multimap<char, int, less<char> > -...

LearnLHC的博客 4911

C++ map和vector向量使用方法

在C++中,vector是一个十分有用的容器。它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。

Miss Z的博客 1824

C++ STL中map方法的简单使用

C++ STL中map方法的简单使用新建map格式输出map形式查找元素删除元素。

weixin_45063703的博客 202

c++学习之std::map的使用方法

c++学习之std::map的使用方法STL是标准C++系统的一组模板类迭代器的iterator的使用功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowch...

上帝禁区 5393

c++map使用方法

Map是c++的一个标准容器,它提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map构造函数;map<string , int >mapstring; map<int ,string >mapint;map<sring, char>mapstring; map< char ,s...

dikuimei3153的博客 86
上一篇: ubuntu下安装opencv报错解决,libgtk2.0-dev安装报错,显示cvNamedWindow错误
下一篇: PAT (Advanced Level) Practice
PickCake
博客等级 码龄7年 8粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值