Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Быстрый поиск в std::vector<Person>


Автор: sergey_85 2.6.2011, 13:43
Привет!

Нужно найти данные в клиентском приложении, есть вектор, он заполняется элементами из БД. Нужно найти  элемент в векторе.  
Какой алгоритм применить?

Код


struct Person
{
     __int64 id;
     std::string name;
};

PersonRepository rep(...);

std::vector<Person> listPerson = rep.GetPersonList(1, 5);

//нужно найти персону у которой id = 9056 ?




Спасибо!

Автор: mes 2.6.2011, 14:19
зависит от гарантий на расположение элементов.. если порядок не определен, то простой поиск перебором.. если упорядочен относительно ключа для поиска, то бинарный поиск..

Автор: sergey_85 2.6.2011, 14:32
Цитата(mes @ 2.6.2011,  14:19)
зависит от гарантий на расположение элементов.. если порядок не определен, то простой поиск перебором.. если упорядочен относительно ключа для поиска, то бинарный поиск..

нет там просто элементы, не словарь.
т.е.обычным for(;;)

Автор: xvr 3.6.2011, 12:00
Цитата(sergey_85 @  2.6.2011,  13:43 Найти цитируемый пост)
Какой алгоритм применить?

Применить другой контейнер - map например  smile 

Автор: bsa 3.6.2011, 12:21
Цитата(sergey_85 @  2.6.2011,  14:32 Найти цитируемый пост)
нет там просто элементы, не словарь.
т.е.обычным for(;;) 
нет. Нужно использовать std::find_if(), так как for(;;) - это не алгоритм.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)