在 C++ 中的 std::map 中查找存在于“查询范围”中的 Key 范围

问题描述 投票:0回答:1

如何查找某个范围内是否有任何键。我正在尝试以下:

目标是在查询范围

-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

c++ stdmap
1个回答
0
投票

正如您在

std::map::lower_bound
文档中看到的那样

返回值

指向第一个不小于key的元素的迭代器。如果 没有找到这样的元素,一个尾后迭代器(参见 end())是 回来了。

(重点是我的)

您没有不小于 3的密钥,因此

m.lower_bound(3)
返回
end()

同样关于

std::map::upper_bound

返回值

指向第一个大于key的元素的迭代器。如果不 找到这样的元素,返回尾部(参见 end())迭代器。

(重点是我的)

您没有大于 3 的密钥,因此

m.upper_bound(3)
返回
end()

© www.soinside.com 2019 - 2024. All rights reserved.