LINUX.ORG.RU

C++ map: поиск по шаблону


0

0
map в виде:
строка -> число

В строке - Полное имя человека
Число - id

Можно ли искать человека по шаблону типа "A*" (начинается с буквы А)? map такое позволяет(без тупого перебора)? Я что-то не нашёл.
★★★★
Смотря какой map, я думаю.

std::map позволяет такое только тем, кто знает волшебное слово upper_bound.

anonymous
()
man gprof /call graph
anonymous
()
man gprof /call graph
anonymous
()
Прошу прощения - два последних рассказа про gprof из соседней ветки.
anonymous
()
Ответ на: комментарий от anonymous
Какой тогда алгоритм?

Просто не очень понимаю. Введённое имя не всегда может быть найдено в map. Как я понял, upper_bound поможет, если найдётся такой ключ, который существует в map.

Единственная идея - это перебрать все элементы, перескакивая через n элементов вперёд и назад, пока не найдётся заведомая буква. n будет зависеть от размера map-а (size).
Selecter ★★★★
() автор топика
хэшмап какой-нибудь или бинарное древо ИМХО позволят, с ограничениями. В общем виде, по регехпу - вряд ли.
bugmaker ★★★★☆
()
Ответ на: комментарий от Selecter
> Как я понял, upper_bound поможет, если найдётся такой ключ, который существует в map.

Нет, он возвращает итератор на первый элемент, больший аргумента. Т.е. на нужный тебе. А там уже сравнивай - то, или не то.

Legioner ★★★★★
()
Ответ на: комментарий от bugmaker
Хотелось бы поподробнее про хэшмап, который позволяет искать по подстроке.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.