2016-08-16 3 views
0

Есть ли эквивалентный std :: algorithm, похожий на std :: map :: lower_bound для std :: tr1 :: unordered_map?Есть ли эквивалентный std :: algorithm, похожий на std :: map :: lower_bound для std :: tr1 :: unordered_map?

+4

Что толку lower_bound, если последовательность неупорядоченный? – cpplearner

+1

В основном я хочу использовать уже существующий контейнер в своем коде, который является std :: tr1 :: unordered_map, не копируя его на std :: map. – Sitesh

+2

На более высоком уровне, чего вы пытаетесь достичь? – Chad

ответ

6

Нет, их нет, поскольку std::unordered_map не является заказным контейнером.

std::lower_bound существует, но она работает только с упорядоченными контейнеров:

Требуется: Элементы e из [first,last) должны быть разделены по отношению к выражению e < value или comp(e, value).

C++ 11, [lower.bound] (§25.4.3.1)

+0

'std :: unordered_map' удовлетворяет' ForwardIterator'. 'std :: lower_bound' требует, чтобы его итератор удовлетворял' ForwardIterator'. Что мне не хватает? – Rakete1111

+2

@ Rakete1111: «Диапазон' [первый, последний] 'должен быть, по крайней мере, частично упорядочен, т.е. разделен по отношению к элементу выражения'

+0

@MatteoItalia, спасибо за редактирование - меня не было. – SergeyA