如何查找某个范围内是否有任何键。我正在尝试以下:
目标是在查询范围
-2 and 2
内获取
[-3,3]
作为关键边界范围(地图中实际存在的)
std::map<int, char> m{ {-2,'B'}, {1, 'C'}, {2, 'A'}};
auto itCurrent = m.lower_bound(-3);
auto itNext = m.upper_bound(-3);
auto it1 = m.lower_bound(3);
auto it2 = m.upper_bound(3);
我确实为
-2
和 itCurrent
获得了价值 itNext
,但为什么我为 end
和 it1
都获得了 it2
。我期待 m.lower_bound(3)
应该回来 2
。
std::map::lower_bound
文档中看到的那样:
返回值
指向第一个不小于key的元素的迭代器。如果 没有找到这样的元素,一个尾后迭代器(参见 end())是 回来了。
(重点是我的)
您没有不小于 3的密钥,因此
m.lower_bound(3)
返回end()
。
std::map::upper_bound
:
返回值
指向第一个大于key的元素的迭代器。如果不 找到这样的元素,返回尾部(参见 end())迭代器。
(重点是我的)
您没有大于 3 的密钥,因此
m.upper_bound(3)
返回 end()
。