Как дать намек на std :: map :: lower_bound?C++

Программы на C++. Форум разработчиков
Гость
Как дать намек на std :: map :: lower_bound?

Сообщение Гость »

Я хочу дать подсказки на std :: map :: lower_bound < /code>.

Почему это даже не разрешено?

Код: Выделить всё

auto key1 = /* some key */;
auto key2 = /* another key that is greater than `key1` */

auto hint = map.lower_bound(key1);

if (/* some check depending on `hint`*/) {
map.insert_or_assign(hint, key1, 3023);
auto second_hint = map.lower_bound(key2); // we'd rather use `hint` here!

if (/* some check depending on `hint`*/) {
auto b = map.insert_or_assign(second_hint, key2, 199);
}
}
< /code>
Как мы можем сделать эту логику оптимально и не переписывая ее полностью. Проблема заключается в том, что неспособность передать подсказку Lower_bound 
(2 -й) заставляет нас делать один и тот же поиск дважды. Это в 2 раза худшая производительность! < /P>
Пожалуйста, поделитесь идеями о том, как это сделать.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... ower-bound

Вернуться в «C++»