C++ map示例

map是一种集合,其中包含0个或多个不排序的元素对(key, value)。key不重复。

multimap是允许key重复的map。

常用函数:insert, []

#pragma warning(disable : 4786) //屏蔽4786警告

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

typedef map<int, string> TMyMap;

void PrintSplitterString(short sCount=50)
{
	if(sCount<20 || sCount>80)
		sCount = 50;
	for(short i=1; i<=sCount;i++)
		cout<<"-";
	cout<<endl;
}

void CoutMapList(const TMyMap& mmMap)
{
	for(TMyMap::const_iterator iter=mmMap.begin();iter!=mmMap.end();iter++)
	{
		string str = iter->second;
		cout<<iter->first<<": "<<str.c_str()<<endl;
	}
}

int main()
{
	TMyMap enumMap;
	PrintSplitterString();
	cout<<"操作: 往map中添加元素方法一"<<endl;
	enumMap[1] = "One";
	enumMap[2] = "Two";
	CoutMapList(enumMap);
	enumMap[2] = "Seven"; //此时将修改键为2的值,如果元素不存在,则新建一个
	CoutMapList(enumMap);

	cout<<endl<<"操作: 往map中添加元素方法二"<<endl;
	enumMap.insert(TMyMap::value_type(2, "Third"));
	enumMap.insert(pair<int, string>(102, "aclive"));
	CoutMapList(enumMap);
	enumMap.insert(TMyMap::value_type(3, "Third"));
	CoutMapList(enumMap);
	PrintSplitterString();

	//查找并获取map中的元素
	PrintSplitterString();
	cout<<"操作: 查找并获取map中的元素"<<endl;
	string tmp = enumMap[4];
	cout<<tmp.c_str()<<endl;

	TMyMap::const_iterator iter_find = enumMap.find(2);
	if(iter_find != enumMap.end())
	{
		//找到了
		cout<<iter_find->second.c_str()<<endl;
	}else {
		//没有找到
		cout<<"没有找到。"<<endl;
	}
	PrintSplitterString();

	//从map中删除运算
	PrintSplitterString();
	cout<<"操作: 从map中删除元素的方法"<<endl;
	CoutMapList(enumMap);
	enumMap.erase(3);
	cout<<"删除3"<<endl;
	CoutMapList(enumMap);
	enumMap.erase(enumMap.begin());
	cout<<"删除开头元素"<<endl;
	CoutMapList(enumMap);
	cout<<"清空"<<endl;
	enumMap.clear();
	CoutMapList(enumMap);
	PrintSplitterString();
	cout<<endl;
	cout<<"所有操作均已经结束"<<endl;
	PrintSplitterString();
	cout<<endl;

//*********************************************************************************************
//* 现在总结如下:
//* 对于map的操作。最好不要通过下标进行。比如:想要取一个元素,要先通过查找,有了,再操作,没有。不操作。
//* 否则有可能系统会为你自动添加 “莫名奇妙” 的元素进去你都不知道
	//先查找后操作!!!!
//*********************************************************************************************

	return 0;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值