【C++】关联式容器(map)详解

map

概念

如果说set对应数学中的“集合”,那么map对应的就是“映射”。map是一种key-value型容器,其中key是关键字,起到索引作用,而value就是其对应的值。与set不同的是它支持下标访问。头文件是

特点

  • 增加和删除节点对迭代器的影响很小(高效的插入与删除)
  • 快速的查找(同set)
  • 自动建立key-value的对应,key和value可以是任何你需要的类型
  • 可以根据key修改value的记录
  • 支持下标[]操作

声明

map<T1,T2> m
其中T1是key类型,T2是value类型,m就是一个T1-T2的key-value。map<string,int> m;//声明一个key为string,value为int的map型容器
例子:

#include<iostream>
#include<map> 
using namespace std;
int main()
{
    
    
	map<string,int> m;
	m["abc"] = 5;
	m["cdf"] = 6;
	m["b"] = 1;
	for(auto it = m.begin();it != m.end();it++)
		cout << it->first <<" " << it->second << endl;
	return 0;
} 

插入元素

使用insert()函数插入pair类型的元素
使用下标操作向map容器中插入元素

map<string,int> m;
	m.insert(make_pair("b",6));//insert插入
	m["a"] = 5;//使用下标插入

删除元素

erase(key):删除键为key的元素
erase(it):删除迭代器it所指向的元素

#include<iostream>
#include<map> 
using namespace std;
int main()
{
    
    
	map<string,int> m;
	m.insert(make_pair("b",6));
	m["a"] = 5;
	m["c"] = 5;
	m["d"] = 5;
	m["e"] = 5;
	
	m.erase("d");
	
	auto pr = m.begin();
	m.erase(pr);
	
	for(auto it = m.begin();it != m.end();it++)
		cout << it->first <<" " << it->second << endl;
	return 0;
} 

map容器的遍历

使用迭代器遍历(代码如上)
注:使用迭代器遍历map容器,其中每一个元素可以看成是pair类型的,访问第一个位置的key值可以用it->first访问,第二个位置value的值可以用it->second访问,其中it是指向该元素的迭代器。

常用函数在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Vcrossover/article/details/114639675