如何在std :: multimap中返回严格小于给定键的最大键?

时间:2011-05-24 16:16:04

标签: c++ stl multimap lower-bound

multimap提供方法lower_boundupper_bound。两者都可以将迭代器返回到键大于所需值的值,lower_bound可能会产生完全所需的值。

现在我想要一个迭代器到一个值,其中键严格 less 所请求的。如果它是map而不是multimap,则实现起来相对简单,如下所述: Returning the greatest key strictly less than the given key in a C++ Map。 但是在multimap中,不能保证递减迭代器使其指向严格小的键。所以我需要反复递减,直到找到一个较小的键。不是特别好。

有更优雅的方式吗?

密钥通常是浮点数。

<小时/> 我很抱歉,事实证明你可以实际上只用一个减量来做。我只是把错误放在我的程序中,这才是真正的错误。

2 个答案:

答案 0 :(得分:2)

AFAIK,lower / upper_bound会将迭代器返回到此值的FIRST元素,所以你可以减少它

答案 1 :(得分:1)

lower_bound指向大于或等于参数的最小元素(或end)。因此,递减一次会为您提供所需的元素(如果存在)。