У меня есть map<double, unique_ptr<Item>>
. Я хотел бы найти эту карту, чтобы найти элемент, где вычисленное значение ближе всего к значению поиска. Вычисленное значение может быть сгенерировано Item::compute
, которое является вычислением длины, которое я бы хотел избежать для всех элементов. Можно предположить, что эта карта уже упорядочена по результатам вычислительной функции.выполнить бинарный поиск на карте элементов
Так что я думал, что могу сделать двоичный поиск, но проблема в том, что я не могу прыгнуть к n-му элементу на карте, так как это карта, а не вектор. В частности, мне нужно будет получить средний элемент между двумя произвольными элементами на карте. Это возможно? Есть ли способ эффективный способ выполнения бинарного поиска на карте?
Если структура данных не поддерживает произвольный доступ к любому элементу, мы не можем выполнять бинарный поиск на ней. – PRP