Возврат итератора ко времени в мультикарте, ближайшей к указанному времени - PullRequest
3 голосов
/ 05 января 2012

Может кто-нибудь предложить элегантный способ решения следующей проблемы, пожалуйста?

У меня есть мультикарта с ключом по времени, и я хочу вернуть элемент, который произошел ближе всего к указанному времени T. Кроме тоговремя поиска по карте может составлять не более часа по обе стороны от T.

Испытание нескольких методов, однако наиболее эффективным представляется сначала отклонить все моменты, которые не находятся в пределах часа от T, изатем переберите оставшиеся предметы, чтобы найти ближайший к T.

Ответы [ 2 ]

9 голосов
/ 05 января 2012

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

0 голосов
/ 05 января 2012

Как насчет попытки найти запись с точным временем первым. Если не найдено, проверьте время + 1, затем время - 1, затем время + 2 и т. Д., Пока не достигнете лимита в один час от времени.

...