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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.