使用上限和下限搜索地图

时间:2013-10-03 11:36:42

标签: c++

STL新手问题:

关于函数std::map::upper_boundstd::map::lower_bound是否有效指定地图中实际不存在的键?

示例

std::map<int,int> intmap;
std::map<int,int>::iterator it1, it2;

intmap[1] = 10;
intmap[2] = 20;
intmap[4] = 40;
intmap[5] = 50;

it1 = intmap.lower_bound (3);  // Is this valid?
it2 = intmap.upper_bound (3);  // Is this valid?

1 个答案:

答案 0 :(得分:27)

是的,它们都有效。

map::lower_bound返回一个迭代器,指向第一个不小于key的元素。

map::upper_bound返回一个指向第一个元素的迭代器,该元素大于key。

intmap[1]=10;
intmap[2]=20;
intmap[4]=40;   // <<---both lower_bound(3)/upper_bound(3) will points to here
intmap[5]=50;

lower_bound/upper_bound返回值插入的位置。

注意,如果您想检查值键是否为地图,您可以使用std::map::find