C++中的map容器的删除、插入、遍历

#include <map>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

struct Display
{    
	void operator()(pair<string,double> info)
	{
		cout << info.first << ":" << info.second << endl;
	}
};
int main(){
	
	map<string, double> scores;
	//map的插入
	scores["jack"] = 98.9;
	scores["xiaoming"] = 90.2;
	scores["lisi"] = 95.1;
	scores["wangwu"] = 86.1;
	scores.insert(pair<string, double>("zhangsan", 100.0 ));  //这样也可以插入元素

	//使用for_each遍历
	for_each(scores.begin(), scores.end(), Display());

	//使用迭代器查找
	map<string,double>::iterator iter;
	iter = scores.find("lisi");
	if(iter != scores.end())  
	{
		cout << "Found the score is " << iter->second << endl;
	}
	else
	{
		cout << "Didn't find the key." << endl;
	}

	//使用迭代器完成遍历
	for(iter = scores.begin(); iter!=scores.end();iter++)
	{
		cout << iter->second << endl;
	}

	//把scores值小于90的键值对删除
	for(iter = scores.begin(); iter!=scores.end();iter++)
	{
		if(iter->second < 90)
		{
			iter = scores.erase(iter);//erase会返回当前iter的下一个iter
		}
	}
	for_each(scores.begin(), scores.end(), Display());
	cout << "-------" << endl;

	//删除元素的另一种方法,通过find查找,再删除
	iter = scores.find("xiaoming");
	scores.erase(iter);
	for_each(scores.begin(), scores.end(), Display());
	cout << "-------" << endl;


	//另一种删除元素的方法,若返回不为0,表示删除了,若返回为0,表示没有找到
	int n = scores.erase("lisi");
	cout << n << endl;

	//清空map容器
	scores.erase(scores.begin(), scores.end());
	
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值