279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
1

Быстрый поиск в мапе

19.06.2017, 23:04. Показов 1278. Ответов 5
Метки нет (Все метки)

Есть мапа вида :
C++
1
std::map<size_t, std::string>
Нужно найти элемент меньший или равный элементу из rbf с конца мапы.
Есть ли быстрый способ это сделать, т.к std::map::lower_bound возвратит итератор на последний элемент?

Добавлено через 2 минуты
Есть другие варианты или этот самый оптимальный?
C++
1
auto itr = std::find_if(digits.rbegin(), digits.rend(), [=](auto & p) { return p.first <= val; });
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2017, 23:04
Ответы с готовыми решениями:

Быстрый поиск
Здравствуйте. Нужно выполнить поиск i-го вхождения заданного элемента в исходном наборе чисел....

Быстрый поиск элемента
Добрый день всем! Такой вопрос - есть у меня строка из 64-х чаров. Мне приходит новый чар и нужно...

Быстрый поиск супернатуральных чисел
Натуральное число будем называть супернатуральным, если в своем десятичном виде оно не содержит...

Быстрый поиск совершенных чисел
Чтобы легко можно было отсылать вопрошающих по этому вопросу, создаю новую тему. Напомню, что ...

5
What a waste!
1604 / 1297 / 179
Регистрация: 21.04.2012
Сообщений: 2,723
19.06.2017, 23:08 2
Лучший ответ Сообщение было отмечено zarko97 как решение

Решение

zarko97, так не подойдёт?
C++
1
auto itr = std::prev(digits.upper_bound(val));
1
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
19.06.2017, 23:47  [ТС] 3
gray_fox, не совсем...в моем случае вероятна ситуация, когда элемент из rbf может оказаться намного больше крайнего элемента мапы...в этом случае std::map::upper_bound вернет опять же end(), а мне нужно последний элемент возвращать

Добавлено через 1 минуту
gray_fox, а не...подойдет. Затупил дико, спасибо!
0
What a waste!
1604 / 1297 / 179
Регистрация: 21.04.2012
Сообщений: 2,723
19.06.2017, 23:49 4
Цитата Сообщение от zarko97 Посмотреть сообщение
.в этом случае std::map::upper_bound вернет опять же end(), а мне нужно последний элемент возвращать
Если upper_bound вернёт end(), то prev(upper_bound) как раз вернёт последний элемент. Я видимо не понял, что тут нужно...
Цитата Сообщение от zarko97 Посмотреть сообщение
rbf
Что это?
0
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
19.06.2017, 23:51  [ТС] 5
gray_fox, range based for

Добавлено через 1 минуту
gray_fox, я почему-то прев не заметил...совсем сессия задрала
0
52 / 30 / 13
Регистрация: 21.05.2017
Сообщений: 109
20.06.2017, 02:06 6
Цитата Сообщение от zarko97 Посмотреть сообщение
Есть другие варианты или этот самый оптимальный?
Это плохой вариант.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.06.2017, 02:06

Быстрый поиск в векторе из pair
Пытаюсь сделать вектор: vector&lt; pair&lt;string, string&gt; &gt; myVect; По идее, проще воспользоваться...

Быстрый поиск минимального числа
подскажите быстрый алгоритм поиска второго минимального числа в массиве?

Быстрый поиск по полям в коллекции
Есть коллекция объектов класса с разными полями. Нужно организовать быстрый поиск первого элемента...

Быстрый поиск ip адреса в текстовом файле
Нужно найти конкретный ip-адрес в текстовом файле (он может попасться несколько раз). На каждой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.