19.Map的常见用法详解优化-[STL模板]

19.Map的常见用法详解优化-[STL模板]

1.map的定义—万能映射


一个元素

这里的typename1是键 typename2是值

map<typename1,typename1> name;
/*
map<double,int> a;
map<string,int> b;
*/

2.map元素的访问

下标访问

map<char,int> b;

b[ ’ c ’ ] = 20 通过访问字符c 映射出 整数 20 键只有一个

下标访问实例:

#include <bits/stdc++.h>
using namespace std;
int main()
{
	map<char,int> a;
	a['c']=20;
	a['c']=30;  //30 把 20 覆盖掉了  键只有一个
	cout<<a['c']<<endl; 
	return 0;
}

输出:30


迭代器访问

map<char,int>::iterator it;

通过:*it访问元素

迭代器访问实例:

#include <bits/stdc++.h>
using namespace std;
int main()
{
	map<char,int> a;
	a['a']=20;
	a['b']=30;  
	a['c']=90;
	map<char,int>::iterator it=a.begin();//令it指向容器a的首地址
	for(it;it!=a.end();it++)
	{
		cout<<it->first<<" "<<it->second<<endl;	
		//键:it->first  值:it->second
	} 
	return 0;
}

输出: a[ ’ X ’ ] = N X就是键 N就是值 , 键:it->first 值:it->second
而且map会自动根据键的大小从小到大排序,输出。这是由于map内部《红黑树》实现
a 20
b 30
c 90


3.map常用函数

(1)find(key)找出键为c的值
返回键为key的迭代器

#include <bits/stdc++.h>
using namespace std;
int main()
{
	map<char,int> a;
	a['a']=20;
	a['b']=30;  
	a['c']=90;
	map<char,int>::iterator it=a.find('c');
	cout<<it->first<<" "<<it->second;
	return 0;
}

输出:c 90

(2)erase()
erase(it) 删除it元素的迭代器
可以使用a.erase(a.find(x)) 利用find()找到x 再用erase删除

erase(x)删除容器中的所有x [ 常用 ]

erase(first,last) 删除[ first,last)间的元素 左闭右开

(3)size()
a.size()获取map内映射数量

4)clear()
清空map的所有映射

发布了28 篇原创文章 · 获赞 28 · 访问量 3870

猜你喜欢

转载自blog.csdn.net/xg987599519/article/details/104075642
今日推荐