multimap
メソッドlower_bound
と を提供しますupper_bound
。どちらも、必要な値よりも大きなキーを持つ値にイテレータを返すlower_bound
可能性があり、正確に必要な値が得られる可能性があります。
ここで、キーが要求された値よりも厳密に小さい値へのイテレータが必要です。それがmap
ではなく である場合multimap
、ここで説明されているように、これを達成するのは比較的簡単です:
Returning the maximum keystrictly less than the given key in a C++ Map . しかし、multimap
では、反復子をデクリメントしても、厳密に小さいキーを指すようになるとは限りません。したがって、より小さなキーが見つかるまで、繰り返しデクリメントする必要があります。特にいいじゃない。
これを行うよりエレガントな方法はありますか?
通常、キーは浮動小数点になります。
申し訳ありませんが、実際には 1 回のデクリメントで実行できることがわかりました。プログラムで間違って配置しただけで、それが本当のエラーでした。