#include<map>简介

map 是一种关联容器, 提供一对一的关联, 关联的形式为: KEY----VALUE(键值对),另外关键字不能重复。
map 也可看做是 关键字映射的集合, 即,map中不可出现重复的关键字,每条映射的关键字都是不同的。
1.map基本用法

#include<iostream>
#include<map>
using namespace std;
int  main()
{
   map<string,int>  mymap;
   map<string,int>::iterator  it;
   mymap["China"] = 100;
   mymap["English"] = 200;
   mymap["America"] = 300;
   for(it=mymap.begin();it!=mymap.end();++it)
	   cout<<(*it).first<<":"<<(*it).second<<endl;
   return 0;
}
//输出结果为
America:300
China:100
English:200
//注:默认情况下,键值对是按键首字母的ascll大小,升序排列

注:以下是关于如何排序map键值对
<font color=‘blue’,size=‘5’>map的按Key排序和按Value排序详解
2.count(x)用于判断某一键是否存在
注:如果mymap的key中有x,则函数返回1,否则返回0.

#include<iostream>
#include<map>
#include<string>
#include<vector>
#include<iomanip>
using namespace std;

int main()
{
	map<string, int>  mymap;
	map<string, int>::iterator  it;
	mymap["China"] = 100;
	mymap["English"] = 200;
	mymap["America"] = 300;
	if (mymap.count("China"))
		cout << "exist" << endl;
	else
		cout << "No exist" << endl;
	system("pause");
	return 0;
}
//输出结果为
exist

3.另外还有一些函数

C++ Maps是一种关联式容器,包含“关键字/值”对  
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的函数  

4.遍历

#include<iostream>
#include<map>
#include<string>
#include<vector>
#include<iomanip>
using namespace std;

int main()
{
	map<string, int>  mymap;
	map<string, int>::iterator  it1;
	map<string, int>::reverse_iterator  it2;
	mymap["China"] = 100;
	mymap["English"] = 200;
	mymap["America"] = 300;
	//正向遍历
	for (it1 = mymap.begin(); it1 != mymap.end(); ++it1)
		cout << it1->first << ":" << it1->second << endl;
	cout << endl<<endl;
	//反向遍历
	for(it2=mymap.rbegin();it2!=mymap.rend();++it2)
		cout << it2->first << ":" << it2->second << endl;
	system("pause");
	return 0;
}
//输出结果为
America:300
China:100
English:200

English:200
China:100
America:300

在这里插入图片描述

  • 20
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值