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