std::
map::lower_bound
公众成员函数 <map>
iterator lower_bound (const key_type& k);
const_iterator lower_bound (const key_type& k) const;
返回下界迭代器
返回一个迭代器,该迭代器指向容器中第一个键不在
k前面的元素(即,键等于或在
k之后)。
该函数使用其内部比较对象(key_comp)来确定这一点,
返回一个指向第一个
key_comp(element,val)会返回
false的元素的迭代器。
如果map类是用默认比较类型(less)实例化的,则该函数返回一个指向键不小于k的第一个元素的迭代器。
类似的成员函数
upper_bound与
lower_bound具有相同的行为,唯一不同的是,
map中包含一个键值等于
k的元素:在这种情况下,
lower_bound返回指向该元素的迭代器,
而upper_bound返回指向下一个元素的迭代器。
☲ 参数
-
K
-
要比较的键。
成员类型key_type是容器中元素的类型,在map中定义为其第一个模板参数(Key)的别名。
☉ 返回值
指向容器中第一个键的迭代器,该键不在k前面的元素,如果所有键都在k前面,则设置为
map::end。
如果
map对象是
const限定的,则函数返回
const_iterator对象。否则,它返回一个
iterator。
成员类型
iterator和
const_iterator是指向元素(value_type类型)的双向迭代器类型。
注意,
map容器中的
value_type本身也是一个
pair类型:
pair<const key_type, mapped_type>。
☣ 示例
// 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'); // itlow points to b
itup=mymap.upper_bound ('d'); // itup points to e (not d!)
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
✥ 复杂度
大小对数.
☣ 迭代器的有效性
不变.
⇄ 数据竞争
访问容器(const和非const版本都不会修改容器)。
不访问映射值:并发访问或修改元素是安全的.
☂ 异常安全性
强保证:如果抛出异常,容器中不会有任何变化。
🍄 另请参阅
map::upper_bound |
返回迭代器上界(公众成员函数) |
map::equal_range |
获取相等元素的范围(公众成员函数) |
map::find |
获取元素迭代器(公众成员函数) |
map::count |
具有特定值的元素数量(公众成员函数) |