C++中的map用法详解

这篇具有很好参考价值的文章主要介绍了C++中的map用法详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1:map的介绍

2:map的操作

(1)定义map类型

(2)输出map中的元素

(3)添加数据

(4)查找数据

(5)删除数据


1:map的介绍

map是C++中STL中的一个关联容器,以键值对来存储数据,数据类型自己定义。它的内部数据结构是红黑树,所有它是由默认排列顺序的,关于map排序这块,大家感兴趣,可以看看这篇文章:C++中的map排序

同时map,它是一对一的,具体就是键值是唯一的,跟哈希表的概念差不多。

2:map的操作

(1)定义map类型

定义map类型,是有模板的,他接受三个参数:
第一个参数是键的数据类型
第二个参数是值的数据类型
第三个参数是排序规则,不写的话就按照默认的排序规则,也就是按照键的升序

举例:
map<int,int>mp;
定义了一个叫mp的map类型,并且键值都是int类型

(2)输出map中的元素

这就是模板,大家记住就行啦!!!
#include<bits/stdc++.h>
using namespace std;
map<string,int>m;

int main()
{
	m["uiui"]=100;
	m["kkkkk"]=999;
	m["asas"]=78;
	m["ns"]=1;
	//第一种遍历输出
	map<string,int>::iterator it;
	for(it=m.begin();it!=m.end();it++){
		cout<<"键="<<it->first<<" 值="<<it->second<<endl;
	}
	cout<<"-----------------------"<<endl;
	//第二种遍历输出
	for(auto i=m.begin();i!=m.end();i++){
		cout<<"键="<<i->first<<" 值="<<i->second<<endl;
	}
	return 0;
}

c++ map,算法,C++,c++,数据结构,算法

(3)添加数据

map中添加数据有很多中办法,不过我比较喜欢用两中,一个是数组下标,另外一个是用insert插入pair数据。具体如下:

map<string,int>m;//定义m

1:使用insert添加元素
m.insert(pair<string,int>("sd",19));




2:直接使用数组下标
m["sd"]=19;

insert插入:

#include<bits/stdc++.h>
using namespace std;
map<string,int>m;
int n;
int main()
{
	cout<<"请输入要添加的元素个数:";
	cin>>n;
	for(int i=0;i<n;i++){
		string s;
		int id;
		cout<<"键:";
		cin>>s;
		cout<<"值:";
		cin>>id;
		m.insert(pair<string,int>(s,id));//insert添加元素
	}
	//第一种遍历输出
	map<string,int>::iterator it;
	for(it=m.begin();it!=m.end();it++){
		cout<<"键="<<it->first<<" 值="<<it->second<<endl;
	}
	return 0;
}

c++ map,算法,C++,c++,数据结构,算法 

 数组下标:

#include<bits/stdc++.h>
using namespace std;
map<string,int>m;
int n;
int main()
{
	cout<<"请输入要添加的元素个数:";
	cin>>n;
	for(int i=0;i<n;i++){
		string s;
		int id;
		cout<<"键:";
		cin>>s;
		cout<<"值:";
		cin>>id;
	    m[s]=id;
	}
	//第一种遍历输出
	map<string,int>::iterator it;
	for(it=m.begin();it!=m.end();it++){
		cout<<"键="<<it->first<<" 值="<<it->second<<endl;
	}
	return 0;
}

c++ map,算法,C++,c++,数据结构,算法

(4)查找数据

 

查找数据有两种办法,一个使用find函数还有一个是用count函数(当然了,你查找数据,很明显要查找的
肯定是键吧,没有查找值的吧,哈哈哈)
(1)find函数
find函数查找成功会返回指向它的迭代器,没有找到的话,返回的是end这个迭代器

(2)count函数
count函数的意思就是查找这个键的出现次数,map中键是唯一的,所以它的值要么是0
要么是1,是1不就是查找成功吗,不过它的缺点也可以知道,它可以确定是否存在这个
键,可是却不能确定这个键的位置

 find函数使用:

#include<bits/stdc++.h>
using namespace std;
map<string,int>m;
int n;
int main()
{
	cout<<"请输入要添加的元素个数:";
	cin>>n;
	for(int i=0;i<n;i++){
		string s;
		int id;
		cout<<"键:";
		cin>>s;
		cout<<"值:";
		cin>>id;
	    m[s]=id;
	}
	//第一种遍历输出
    map<string,int>::iterator ii,tt;//作为查找返回的迭代器
	map<string,int>::iterator it;
	//查找uuu
	ii=m.find("uuu");
	tt=m.find("kkk");
	if(ii==m.end()){
		cout<<"没有查找到uuu"<<endl;
	}
	else{
		cout<<"查找uuu成功,并且它的值="<<ii->second<<endl;
	}
	if(tt==m.end()){
		cout<<"没有查找到kkk"<<endl;
	}
	else{
		cout<<"查找kk成功,并且它的值="<<tt->second<<endl;
	}
	cout<<"map中的键值对如下 :"<<endl;
	for(it=m.begin();it!=m.end();it++){
		cout<<"键="<<it->first<<" 值="<<it->second<<endl;
	}
	return 0;
}

c++ map,算法,C++,c++,数据结构,算法

 count函数使用:

#include<bits/stdc++.h>
using namespace std;
map<string,int>m;
int n;
int main()
{
	cout<<"请输入要添加的元素个数:";
	cin>>n;
	for(int i=0;i<n;i++){
		string s;
		int id;
		cout<<"键:";
		cin>>s;
		cout<<"值:";
		cin>>id;
	    m[s]=id;
	}
	//第一种遍历输出
	map<string,int>::iterator it;
	//查找uuu
	int ii=m.count("uuu"),tt=m.count("kkk");
	if(ii==1){
		cout<<"查找成功"<<endl;
	}
	else{
		cout<<"查找失败"<<endl;
	}
	if(tt==1){
		cout<<"查找成功"<<endl;
	}
	else{
		cout<<"查找失败"<<endl;
	}
	cout<<"map中的键值对如下 :"<<endl;
	for(it=m.begin();it!=m.end();it++){
		cout<<"键="<<it->first<<" 值="<<it->second<<endl;
	}
	return 0;
}

c++ map,算法,C++,c++,数据结构,算法

 文章来源地址https://www.toymoban.com/news/detail-542567.html

(5)删除数据

删除map中的数据用到的是erase函数啦

erase里的参数可以直接写键,也可以写迭代器。

erase(m.begin(),m.end());//这句话代表清空m中的内容
#include<bits/stdc++.h>
using namespace std;
map<string,int>m;
int n;
int main()
{
	cout<<"请输入要添加的元素个数:";
	cin>>n;
	for(int i=0;i<n;i++){
		string s;
		int id;
		cout<<"键:";
		cin>>s;
		cout<<"值:";
		cin>>id;
	    m[s]=id;
	}
	//第一种遍历输出
	map<string,int>::iterator it;
	cout<<"map中的键值对如下 :"<<endl;
	for(it=m.begin();it!=m.end();it++){
		cout<<"键="<<it->first<<" 值="<<it->second<<endl;
	}
	m.erase("uuu");
	map<string,int>::iterator ii;
	ii=m.find("opop");
	if(ii!=m.end()){
		m.erase(ii);//存在opop键,就删除
	}
	cout<<"map中的键值对如下 :"<<endl;
	for(it=m.begin();it!=m.end();it++){
		cout<<"键="<<it->first<<" 值="<<it->second<<endl;
	}
	return 0;
}

c++ map,算法,C++,c++,数据结构,算法

 

到了这里,关于C++中的map用法详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 初识Go语言25-数据结构与算法【堆、Trie树、用go中的list与map实现LRU算法、用go语言中的map和堆实现超时缓存】

      堆是一棵二叉树。大根堆即任意节点的值都大于等于其子节点。反之为小根堆。   用数组来表示堆,下标为 i 的结点的父结点下标为(i-1)/2,其左右子结点分别为 (2i + 1)、(2i + 2)。 构建堆   每当有元素调整下来时,要对以它为父节点的三角形区域进行调整。 插入元素

    2024年02月12日
    浏览(59)
  • map和set的具体用法 【C++】

    关联式容器里面存储的是key, value结构的键值对,在数据检索时比序列式容器效率更高。比如:set、map、unordered_set、unordered_map等 注意 : C++STL当中的stack、queue和priority_queue属于容器适配器,它们默认使用的基础容器分别是deque、deque和vector 键值对是用来表示具有 一一对应 关系

    2024年02月08日
    浏览(46)
  • 【C++】数据结构与算法:常用排序算法

    😏 ★,° :.☆( ̄▽ ̄)/$: .°★ 😏 这篇文章主要介绍常用排序算法。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路🥞 排序算法是计算机科学中常见的一类算法,用于将一组数据按照特定的顺序进行排

    2024年02月14日
    浏览(49)
  • 【c++学习】数据结构中的链表

    链表与线性表相对,链表数据在内存中的存储空间是不连续的,链表每个节点包含数据域和指针域。 下述代码实现了链表及其接口 包括增、删、查、改以及其他一些简单的功能 运行结果: 于 2024-01-23 第一次整理编写 学习时整理,不当之处烦请指正 码字不易,留个赞再走吧

    2024年01月24日
    浏览(55)
  • 【数据结构与算法C++实现】3、排序算法

    原视频为左程云的B站教学 外层循环 :n个数需要冒n-1个泡上去,剩下的一个必然是最小的。所以外层循环执行n-1轮 内层循环 :比大小,第1个泡需要比n-1次,第2个泡,比较n-2次… 选择: 每次从待排序序列中选择 最小的一个 放在已排序序列的后一个位置 原理类似于对扑克牌

    2024年02月11日
    浏览(58)
  • C++数据结构之队列详解

    队头填充进四个元素 此时思考一个问题,当删除元素时(元素出队列时)会出现假饱和的情况,如上图m_data[0]和m_data[1]再进行出队列操作之后,这两个位置可以容纳新的元素,但m_rear没有回到原本的m_data[0]位置,因此需要引入一个新的队列结构,环形队列,m_rear这个位置可以

    2024年02月05日
    浏览(42)
  • 数据结构——优先队列c++详解

    百度百科定义 优先队列是0个或多个元素的集合,每个元素都有一个优先权或值,对优先队列执行的操作有1) 查找;2) 插入一个新元素;3) 删除.在最小优先队列(min priority queue)中,查找操作用来搜索优先权最小的元素,删除操作用来删除该元素;对于最大优先队列(max priority queue),查找操

    2024年02月09日
    浏览(41)
  • C++中的常见数据结构 --- 队列、栈、列表

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 队列、栈、列表是其中三个最为基础和常用的数据结构,它们在编程的世界中被广泛应用,为算法和数据处理提供了不可或缺的支持。今天来简单的介绍一下!以及他们在C++中的简单用法! 队列是一种常见

    2024年01月22日
    浏览(49)
  • C++基础-介绍·数据结构·排序·算法

    C++是一门风格严谨又不失自由的开发语言,提供了完整的内存管理、支持函数式编程和面向对象编程,支持模板、多继承、多实现、重载、重写等多态特性。 优势在于目前90%的操作系统、数据库、应用基础架构、硬件嵌入式等都是使用C/C++制作的,而C++是对C的标准扩展,掌握

    2024年02月03日
    浏览(45)
  • C++数据结构与算法——哈希表

    C++第二阶段——数据结构和算法,之前学过一点点数据结构,当时是基于Python来学习的,现在基于C++查漏补缺,尤其是树的部分。这一部分计划一个月,主要利用代码随想录来学习,刷题使用力扣网站,不定时更新,欢迎关注! 给定两个字符串 s 和 t ,编写一个函数来判断

    2024年02月19日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包