map的基本操作

本文详细介绍了C++标准库中的map容器,包括插入元素、查找元素、删除元素及遍历map等基本操作,帮助读者掌握如何在实际编程中有效使用map。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

map的基本操作

在这里插入图片描述

#include<iostream>
#include<map>
#include<set>
#include<string>
using namespace std;
//mulimap与map的区别
//(1)mulimap允许key冗余,但是map不允许key冗余
//(2)mulimap没有operator[],但是map有
////写一下pair的具体结构是怎样的
//template<class K, class V)//第(1)种的结构
//struct pair
//{
//	K first;
//	V second;
//};
////写一下make_pair的具体结构是怎样的
//template<class K, class V>//第(2)种的结构
//inline std::pair(K, V) make_pair(const K& k, const V& v)
//{
//	return std::pair<K, V>(k, v);
//}

void test_map()
{
	//key/value.通过关键字查找映射关联信息value
	map<string, string> m;

	//pair是一个结构体,里边有first(K)和second(V)
	m.insert(std::pair<string, string>("sort", "排序"));//(1)
	m.insert(std::pair<string, string>("string", "字符串"));
	//看看上边那一大串,是多么复杂啊,有简单的写法吗?看下边
	m.insert(make_pair("sort", "排序"));//函数模板(2) 调上面那个函数,自己推演类型
	//也可以这样插入,利用operator[]
	m["pair"];
	m["key"] = "关键字";

	std::map<string, string>::iterator it = m.begin();
	while (it != m.end())
	{
		cout << (*it).first << " :"<< (*it).second << endl;
		++it;
	}
	cout << endl;

	string strs[] = { "苹果", "苹果", "西瓜", "香蕉", "苹果", "西瓜", "苹果" };
	//统计水果出现的次数
	//第一种统计的方法
	//map<string, int> countmap;//这是一个空的容器
	//for (const auto& str : strs)
	//{
	//	auto it = countmap.find(str);
	//	if (it != countmap.end())
	//	{
	//		it->second++;
	//	}
	//	else
	//	{
	//		countmap.insert(std::make_pair(str, 1));
	//	}
	//}
	//第二种统计的方法
	map<string, int> countmap;
	for (const auto& str : strs)
	{
		countmap[str]++;//operator[]
	}

	//第三种统计的方法
	for (const auto& str : strs)
	{
		auto ret = countmap.insert(make_pair(str, 1));
		if (ret.second == false)//假如插入失败,就证明countmap中有这个了
		{
			ret.first->second++;
		}
	}
	map<string, int>::iterator cit = countmap.begin();
	while (cit != countmap.end())//key还是按照字母的acll码排的
	{
		cout << cit->first << " :" << cit->second << endl;
		cit++;
	}
	cout << endl;
	//用auto遍历(学会用这个)
	for (auto& kv : countmap)
	{
		cout << kv.first << ":" << kv.second << endl;
	}
}
int main()
{
	test_map();
	system("pause");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值