|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.06.2012, 04:00 | #1 |
В прострации
Форумчанин
Регистрация: 13.01.2009
Сообщений: 239
|
STL. Поиск в multiset.
Нужно найти всех людей с определённой фамилией, как это можно сделать?
Код:
Пол-жизни сидючи, в монитор глядючи...
|
24.06.2012, 04:09 | #2 |
В прострации
Форумчанин
Регистрация: 13.01.2009
Сообщений: 239
|
Как всегда решение пришло сразу после поста на форум. Вот так:
Код:
Пол-жизни сидючи, в монитор глядючи...
|
24.06.2012, 04:50 | #3 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
multiset использует operator< как для сортировки, так и для проверки на равенство двух элементов, поэтому operator== не вызывался.
Сортировка происходит немедленно, при вставке элемента, о каких именно затратах Вы говорите? И кстати, операторы <, ==, >, <=, etc... возвращает значение типа bool, не нужно ещё условный оператор использовать. Код:
|
25.06.2012, 09:55 | #4 |
В прострации
Форумчанин
Регистрация: 13.01.2009
Сообщений: 239
|
Нужен более показательный пример. Допустим есть класс employer. Пусть он имеет поля name, lastname, patronic(отчество). Необходимо добавить большое число экземпляров класса в память таким образом, чтобы поиск происходил максимально быстро. При этом поиск может идти с указанием как всех трёх полей, так и одного/двух.
При добавлении экземпляров в дерево первичным ключом является фамилия. Насколько я понимаю, перестроить дерево так, чтобы ключом являлось имя(для поиска по имени) невозможно. У меня есть идея - создать multimap и добавить туда все записи по три раза, так чтобы поиск можно было произвести по любой из сущностей. Есть ещё одна идея. Плюнуть множества/отображения и сделать всё списком, но тогда теряется так нужная мне скорость поиска. Можно ли сделать нужный мне поиск по множеству/отображению или лепить список?
Пол-жизни сидючи, в монитор глядючи...
|
25.06.2012, 10:03 | #5 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
Last
При этом поиск может идти с указанием как всех трёх полей, так и одного/двух. Стандартные контейнеры не поддерживают поиск по нескольким ключам. Можно ли сделать нужный мне поиск по множеству/отображению или лепить список? изобретать свой контейнер или взять Boost.MultiIndex
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
25.06.2012, 10:47 | #6 |
В прострации
Форумчанин
Регистрация: 13.01.2009
Сообщений: 239
|
Пол-жизни сидючи, в монитор глядючи...
|
25.06.2012, 13:22 | #7 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
Last
Спасибо, эта штука должна меня спасти =) Многих уже спасла (: Примеры есть даже на этом форуме, в том числе и с комбинированным индексом (как раз твой случай)
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с STL. Поиск эйлерова цикла на графе | litviak | Общие вопросы C/C++ | 2 | 14.04.2012 10:45 |
Контейнер multiset | applegrub | Общие вопросы C/C++ | 9 | 14.03.2012 02:41 |
Поиск в векторе stl | Blad47 | Помощь студентам | 8 | 15.04.2011 15:14 |
stl,Поиск Определителя матриц и решение линейных уравнений. | igsxor | Общие вопросы C/C++ | 0 | 19.03.2011 21:52 |
Сортировка multiset | m9yt | Общие вопросы C/C++ | 5 | 11.05.2010 00:48 |