multimap
提供方法lower_bound
和upper_bound
。两者都可以将迭代器返回到键大于所需值的值,lower_bound
可能会产生完全所需的值。
现在我想要一个迭代器到一个值,其中键严格 less 所请求的。如果它是map
而不是multimap
,则实现起来相对简单,如下所述:
Returning the greatest key strictly less than the given key in a C++ Map。
但是在multimap
中,不能保证递减迭代器使其指向严格小的键。所以我需要反复递减,直到找到一个较小的键。不是特别好。
有更优雅的方式吗?
密钥通常是浮点数。
<小时/> 我很抱歉,事实证明你可以实际上只用一个减量来做。我只是把错误放在我的程序中,这才是真正的错误。
答案 0 :(得分:2)
AFAIK,lower / upper_bound会将迭代器返回到此值的FIRST元素,所以你可以减少它
答案 1 :(得分:1)
lower_bound
指向大于或等于参数的最小元素(或end
)。因此,递减一次会为您提供所需的元素(如果存在)。