【C++ 学习笔记】:STL-multimap
2011-08-09 15:19
239 查看
multimap提供了可以一种可以有重复键值的STL map类型。其插入方式和map相似,但是由于可以拥有重复键值所以在查找方面有些不同。
查找
1. 直接找到每种键值的所有元素的第一个元素的游标
通过函数:lower_bound( const keytype& x ), upper_bound( const keytype& x ) 可以找到比指定键值x的小的键值的第一个元素和比指定键值x大的键值的第一个元素。返回值为该元素的游标。
细节:当到达键值x已经是最大时,upper_bound返回的是这个multimap的end游标。同理,当键值x已经是最小了,lower_bound返回的是这个multimap的begin游标。
2. 指定某个键值,进行遍历
可以使用上面的lower_bound和upper_bound函数进行游历,也可以使用函数equal_range。其返回的是一个游标对。游标对pair::first是由函数lower_bound得到的x的前一个值,游标对pair::second的值是由函数upper_bound得到的x的后一个值。
样例如下:
结果:
1 => 11 12 13
2 => 21 22
3 => 31 32
查找
1. 直接找到每种键值的所有元素的第一个元素的游标
通过函数:lower_bound( const keytype& x ), upper_bound( const keytype& x ) 可以找到比指定键值x的小的键值的第一个元素和比指定键值x大的键值的第一个元素。返回值为该元素的游标。
细节:当到达键值x已经是最大时,upper_bound返回的是这个multimap的end游标。同理,当键值x已经是最小了,lower_bound返回的是这个multimap的begin游标。
2. 指定某个键值,进行遍历
可以使用上面的lower_bound和upper_bound函数进行游历,也可以使用函数equal_range。其返回的是一个游标对。游标对pair::first是由函数lower_bound得到的x的前一个值,游标对pair::second的值是由函数upper_bound得到的x的后一个值。
样例如下:
multimap<int,int> a; a.insert(pair<int,int>(1,11)); a.insert(pair<int,int>(1,12)); a.insert(pair<int,int>(1,13)); a.insert(pair<int,int>(2,21)); a.insert(pair<int,int>(2,22)); a.insert(pair<int,int>(3,31)); a.insert(pair<int,int>(3,32)); multimap<int,int>::iterator p_map; pair<multimap<int,int>::iterator, multimap<int,int>::iterator> ret; for(p_map = a.begin() ; p_map != a.end();) { cout<<p_map->first<<" =>"; ret = a.equal_range(p_map->first); for(p_map = ret.first; p_map != ret.second; ++p_map) cout<<""<< (*p_map).second; cout<<endl; }
结果:
1 => 11 12 13
2 => 21 22
3 => 31 32
相关文章推荐
- 【学习笔记】C++高级程序设计:STL:Map 和 Multimap
- C++ STL 学习笔记 map multimap
- 【C++ 学习笔记】:STL-multimap
- C++ STL学习笔记八 multiset多重集合容器
- STL学习笔记----6.容器 map 和 multimap
- 【C++ 学习笔记】:STL-map
- STL学习笔记— —容器map和multimap
- C++ STL学习笔记四 list双向链表容器
- C++精华(STL)学习笔记之算法
- 【学习笔记】C++高级程序设计:STL标准模板库(2)
- C++ STL--vector向量容器学习笔记
- C++学习笔记(五)标准模板库STL
- C++ STL--queue队列容器学习笔记
- C++学习笔记--STL(映射:map)
- C++ sgi STL学习笔记之non-mutating algorithm
- C++ Primer Plus学习笔记之STL算法
- C++ STL--map映照容器学习笔记
- C++ Standard Stl -- SGI STL源码学习笔记(01) auto_ptr
- C++ STL 学习笔记
- C++ 学习笔记:STL 容器一些底层机制