Как вернуть наибольший ключ строго меньше, чем данный ключ в std :: multimap? - PullRequest
1 голос
/ 24 мая 2011

multimap предлагает методы lower_bound и upper_bound.Оба могут вернуть итератор к значению с ключом, большим, чем желаемый, с lower_bound, возможно, дающим точно желаемое.

Теперь я хочу, чтобы итератор к значению, где ключ строго меньше запрошенныйЕсли бы это был map, а не multimap, этого было бы относительно просто достичь, как описано здесь: Возвращение наибольшего ключа строго меньше, чем заданный ключ в C ++ Map .Но в multimap уменьшение итератора не гарантирует его указание на ключ строго меньшего размера.Так что мне нужно будет несколько раз уменьшать, пока не будет найден ключ меньшего размера.Не особенно приятно.

Есть ли более элегантный способ сделать это?

Ключи, как правило, будут с плавающей точкой.


Мои извинения, оказывается, вы можете на самом деле сделать это с одним уменьшением.Я просто ошибся в своей программе, это была настоящая ошибка.

Ответы [ 2 ]

2 голосов
/ 24 мая 2011

AFAIK, lower / upper_bound вернет итератор в элемент FIRST этого значения, так что вы можете уменьшить его

1 голос
/ 24 мая 2011

lower_bound указывает на наименьший элемент, который больше или равен аргументу (или end). Таким образом, уменьшив его один раз, вы получите нужный элемент (если он существует).

...