关于map的入门使用

关于map的入门使用

1,map简介

map是STL的一个关联容器,它提供一对一的hash。

第一个可以称为关键字(key),每个关键字只能在map中出现一次;
第二个可能称为该关键字的值(value);

map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。Map主要用于资料一对一映射(one-to-one)的情況,map內部的实现自建一颗红黑树,这颗树具有对数据自动排序的功能。在map内部所有的数据都是有序的,后边我们会见识到有序的好处。比如一个班级中,每个学生的学号跟他的姓名就存在著一对一映射的关系。
在这里插入图片描述
在这里插入图片描述
2.简单翻译
map实际上就是一种集合,我们都知道集合内的元素是不重复的,所以,在map里的元素都是独一无二的。
map函数的基础模板是 map<key , value>m;
每个map中包括一个key和一个value,他们可以是各种类型如int ,long long,string…
key相当于集合中的元素,value是key对应的值,他们成一一对应的关系,也就是映射关系。
3.map的基础操作
首先 map 的使用需要 #include 头文件的加持
把map当成一个大箱子,那么向箱子里加入元素的方式主要有两种:

// 第一 种 用insert函數插入pair
mapStudent.insert(pair<int, string>(000, “student_zero”));

// 第二种 用"array"方式插入
mapStudent[123] = “student_first”;
mapStudent[456] = “student_second”;

而我更喜欢用的是第二种,第二种是一种类似数组的形式,它可以对value的值进行修改,而第一种只能建立一种僵硬的映射。


对于map函数的输出形式
1.m.find()
c++ 里面的map容器的迭代器里面 有个first 和 second
例如:
map<string, int> m;
m[3] = 1;
m.find()map<int , int>::iterator it;
it=m.find(3);
it->first; // 这个是 int 值是 3
it->second; //这个是 int 值是 1
find函数是查找key,然后用->first输出key,用->second输出value。
如果你看过模板的话,应该知道m.find()的返回值是迭代器位置。
而如果要使用迭代器就要写一段说明:
map<int,int>m::iterator it
这个it可以作为接受点:
it=m.find(1);
演示案例:

#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
map<int,int>m;
map<int,int>::iterator it;
int main()
{
	m[2]=3;
	m[3]=1;
	m[1]=9;
	m[6]=5;
	it=m.find(6);
	cout<<it->first<<' '<<it->second<<endl;
	return 0;
 } 

还有一个输出方法如下:

#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
map<int,int>m;
map<int,int>::iterator it;
int main()
{
	m[2]=3;
	m[3]=1;
	m[1]=9;
	m[6]=5;
	cout<<m[6]<<' '<<m[2]<<endl;
	return 0;
 } 

也就是直接输出。


最后,还是补充点常见的操作:

 begin()         返回指向map头部的迭代器

 clear()        删除所有元素

 count()         返回指定元素出现的次数

 empty()         如果map为空则返回true

 end()           返回指向map末尾的迭代器

 equal_range()   返回特殊条目的迭代器对

 erase()         删除一个元素

 find()          查找一个元素

 get_allocator() 返回map的配置器

 insert()        插入元素

 key_comp()      返回比较元素key的函数

 lower_bound()   返回键值>=给定元素的第一个位置

 max_size()      返回可以容纳的最大元素个数

 rbegin()        返回一个指向map尾部的逆向迭代器

 rend()          返回一个指向map头部的逆向迭代器

 size()          返回map中元素的个数

 swap()           交换两个map

 upper_bound()    返回键值>给定元素的第一个位置

 value_comp()     返回比较元素value的函数
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值