map::lower_bound/upper_bound的使用
http://blog.csdn.net/zoopang/article/details/13035825
#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main()
{
map<char,int> mymap;
map<char,int>::iterator itlow,itup;
mymap['a']=20;
mymap['b']=40; //注释看看
mymap['c']=60;
mymap['d']=80;
mymap['e']=100;
itlow=mymap.lower_bound ('b'); // 寻找 'b' <= ?
itup=mymap.upper_bound ('d'); // 寻找 'd' < ?
mymap.erase(itlow,itup); // erases [itlow,itup) 不包括最后一个元素
for (map<char,int>::iterator it=mymap.begin(); it!=mymap.end(); ++it){
cout << it->first << " => " << it->second << '\n';
}
return 0;
}
输出:
a => 20
e => 100
好了,相信看了程序之后就一目了然,但是要怎么记住呢?
一句话解释:
lower_bound(k)寻找 k <= ? 并返回其迭代器
upper_bound(k)寻找 k < ? 并返回其迭代器
(其中 ?为那个最接近的key值)
map中的lower_bound和upper_bound的意思其实很简单:
map::lower_bound(key):返回map中第一个大于或等于key的迭代器指针
map::upper_bound(key):返回map中第一个大于key的迭代器指针