第二十三模板 18.3.3 多重映射 multimaps

//第二十三模板 18.3.3 多重映射 multimaps
//多重映射Multimaps和maps映射很相似,但是MultiMaps允许重复的关键字,这使得nultimap在某些情下会更有用,比如说在电话簿中同一个人可以多个电话号码

//1 插入元素
//multimap模板类的insert方法为我们解决了插入的难题

//2 查找第一个与关键字相关联的值
//与map类似, multimap具备两个版本重载的find()成员函数

//3查找多个与同一个关键字相关联的值
//假如我们想要获得multimap容器中所有与要查找的关键字相关联的值,可以使用equal_range()函数
//pair equal_range(const key_type &key)

//4遍历元素
//Multimaps与maps的遍历相同
/*#include <iostream>
#include <map>
#include <string>
using namespace std;
typedef multimap<string,string>::value_type CIT;
typedef multimap<string,string>::const_iterator IT;
template<class T1, class T2>
void show(IT&it, multimap<T1,T2>&r)
{
	for(it=r.begin(); it!=r.end(); ++it){
		cout<<it->first<<"\t"<<it->second<<endl;
	}
}

int main()
{
    multimap<string,string>phone;
	phone.insert(CIT("朱然","01012345678"));
	phone.insert(CIT("朱然","8756697"));
	phone.insert(CIT("朱然","13811638358"));
	IT ii;
	cout<<"遍历并输出所有元素"<<endl;
	show(ii,phone);
	cout<<"查找关键字为'朱然'的所有数据"<<endl;
	ii = phone.find("朱然"); //这是只会返回一个值,

	cout<<ii->first<<"\t"<<ii->second<<endl;


	typedef pair<IT,IT> PAIR;
	PAIR p = phone.equal_range("朱然"); //这个是查找所有关键字的值
	for(IT i = p.first; i!=p.second; ++i)
	{
		cout<<i->first<<"\t"<<i->second<<endl;
	}
	system("pause");
	return 0;
}
*/
/*
begin()   返回指向第一个元素的迭代器
clear()   删除所有元素
count()   返回一个元素出现的次数
empty()   如果multimap为空由返回值
end()     返回一个指向multimap末尾的迭代器
equal_range() 返回指向元素的key为指定值的迭代器对
erase()   删除元素
find()    查找元素
get_allocator()  返回multmap的配置器
insert()   插入元素
key_comp() 返回比较key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size()    返因可容纳的最大元素的个数
rbegin()
rend()
size()
swap()
upper_bound()
value_comp()   返回比较元素value的函数size()
*/

  

posted @ 2012-10-04 20:01  简单--生活  阅读(340)  评论(0编辑  收藏  举报
简单--生活(CSDN)