Мне нужно создать таблицу поиска, которая связывает длину с интервалом времени (оба имеют тип данных double). Клавиши линейно увеличиваются, когда они вставлены, поэтому он уже будет отсортирован (возможно, неупорядоченный_мап будет лучше?).
То, что я ищу, - это способ найти ключ, который наилучшим образом соответствует текущей длине, предоставленной для получения значения времени, или даже лучше найти две клавиши, которые окружают длину (данный ключ находится между ними), поэтому я могу найдите интерполированное значение между двумя значениями времени.
Мне также нужна лучшая производительность, так как она будет вызываться в режиме реального времени.
EDIT: я бы предпочел следующее: комментарий к первому ответу ниже, но формат трудно читать.
Я попытался сделать следующее, но, похоже, возвращает тот же итератор (5.6):
std::map<double, double> map;
map.insert(std::pair<double, double>(0.123, 0.1));
map.insert(std::pair<double, double>(2.5, 0.4));
map.insert(std::pair<double, double>(5.6, 0.8));
std::map<double, double>::iterator low, high;
double pos = 3.0;
low = map.lower_bound(pos);
high = map.upper_bound(pos);
Как бы я получил "низкий", чтобы указать на последний элемент, который равен < чем ключ, используемый для поиска?
ИЗМЕНИТЬ 2: Глупый, "низкий", сделает это, не придавая ему не первого элемента.
Как добраться:)