如题,原来会这两个函数的用法的,但是后来又忘了,这说明,我的理解还不够,所以我今天又折腾了一下
首先看一下函数原型:
iterator upper_bound (const key_type& k);
const_iterator upper_bound (const key_type& k) const;
类似的
iterator lower_bound (const key_type& k);
const_iterator lower_bound (const key_type& k) const;
看一个例子:
// map::lower_bound/upper_bound
#include <iostream>
#include <map>
int main ()
{
std::map<char,int> mymap;
std::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'); // 寻找 'c' < ?
mymap.erase(itlow,itup); // erases [itlow,itup)
// print content:
for (std::map<char,int>::iterator it=mymap.begin(); it!=mymap.end(); ++it)
std::cout << it->first << " => " << it->second << '\n';
return 0;
}
输出:
a => 20
e => 100
好了,相信看了程序之后就一目了然,但是要怎么记住呢?
一句话解释:
lower_bound(k)寻找 k <= ? 并返回其迭代器
upper_bound(k)寻找 k < ? 并返回其迭代器
(其中 ?为那个最接近的key值)