multimap
提供了方法lower_bound
和upper_bound
。兩者都可能會返回一個迭代器到鍵值大於所需值的值,lower_bound
可能產生完全所需的值。如何在std :: multimap中返回嚴格小於給定鍵的最大鍵?
現在我想要一個迭代器的值,其中的關鍵是嚴格的少的要求。如果它是map
而不是multimap
,則這將如下所述相對簡單地實現: Returning the greatest key strictly less than the given key in a C++ Map。 但是在multimap
中,遞減迭代器並不能保證使其指向嚴格更小的密鑰。所以我需要反覆減少,直到找到一個更小的密鑰。不是特別好。
有沒有更好的方法來做到這一點?
鍵一般都是浮點數。
我的歉意,事實證明你 可以實際上做一個單一的遞減。我只是把它放在我的程序中,這是真正的錯誤。
我認爲是這樣,它肯定可以在'map'中使用,但似乎不在'multimap'中。除非錯誤確實存在於其他地方,否則讓我再檢查一次...... – leftaroundabout 2011-05-24 16:25:26
你確定你沒有碰到浮點舍入問題,你認爲你應該有相同的浮點數(也就是說,具有相同值的多個鍵),但是你的鑰匙實際上有一點非常小的百分比? – Jason 2011-05-24 16:31:30
確實似乎是另一個問題,但它肯定與multimap的lower_bound方法有關。我仍然不確定。 – leftaroundabout 2011-05-24 16:33:40