C++ map 总结

本文总结了C++中的map容器,包括如何建立、添加数据、使用迭代器遍历、查找、删除、交换和排序等操作。通过实例演示了map的常见用法,如直接赋值、insert插入、通过迭代器遍历以及使用find和count查找键值对。

文章目录

map常见用法说明

C++ map就是Python里的字典,键值对构成,键唯一,值可以重复
1、建立map
使用前加头文件 #include <map>

声明

map<key_size, value_size> map_name;

键值对类型可以是基础数据类型,也可以是结构体或类;

二、添加数据

2.1 直接赋值 使用 { } 类似于数组赋值

 map <int ,string > ID_name ={
		{2015,'Jim'},
	    {2016,"Tom"}
};

注意:直接赋值的方式 无需在赋值前再定义 ,即 (以下重复定义)

 map <int ,string > ID_name; (要去掉)
 
 map <int ,string > ID_name ={
		{2015,'Jim'},
	    {2016,"Tom"}
};

2.2 [ ] 插入:给对应的键赋某个值

map_name[ key ] = value;

如 ID_Name[2015] = “Tom”;

2.3 insert 插入

  • pair 怎么使用

3、map 迭代器
语法:map_name<key_type,value_type>::iterator 迭代器名字;

map 遍历 (打印出map)
首先定义迭代器;再从头到尾遍历注意区间是 [ begin, end)

map <key_type,value_type>::iteratror iterator_name; 
**注意这里是map,不是声明中map 的名字,即这里的 map 是固定的**
for( iterator_name = map.begin(); iterator_name != map.end(); iterator_name++ )
cout << iteror_name ->first << "->" << iterator_name->second << endl;

实例:

#include <iostream>
#include <map>
using namespace std;
int main()
{
	
	map<int, string>t = {
		{0,"tom"},
		{1,"app"}
	};

	map<int, string>::iterator iter;
	for (iter = t.begin(); iter != t.end(); iter++)
		cout << iter->first << "->" << iter->second << endl;
	return 0;
}

结果
0->tom
1->app

这里的 iter->first 是输出map的键,iter->second 输出前面 map的键对应的值

这里的 iter->fist 也可以写成 (*iter).first

4、查找
map_name.find(key);map_name.count(key);
区别;

map_name.find(key); 返回是一个迭代器 

因此,

int  n;
n = map_name.find(key); 错误

map.count(key) 查找 map 中是否存在键值,若存在返回1,否则0;缺点:无法定位数据出现的位置。
map.find(key); 返回一个迭代器;若存在返回 key 所在位置的迭代器,否则等于 end 返回的迭代器

对值的使用:
map.at(key); 输出 key 所对应的值
比如 cout << map.at(0); 输出key为0的值;

4、删除

5、交换

6、排序

8、取值

#include <iostream>
#include <map>
#include <string>
using namespace std;
int main()
{
	//声明map
	map<int, string> t; 

	//插入
	t[0] = "apple";
	t[1] = "pear";


	//迭代器
	map<int, string>::iterator iter;
	iter = t.find(2);
	if (iter != t.end())
		cout << "字典中有这个值" << endl;
	else
		cout << "字典中没有这个值" << endl;
	return 0;
}

添加要改颜色的字体

添加要改颜色的字体

添加要改颜色的字体

添加要改颜色的字体

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值