第二十三模板 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()

*/

  

你可能感兴趣的:(map)