Рейтинг:
1
KarstenK
Это звучит бедно, потому что итерация это одна из главных отличительных особенностей класса векторных контейнеров.
Если ваш вектор отсортирован я бы предложил быстрее двоичный поиск но я думаю, что вы можете рассмотреть это на более поздней стадии вашего проекта.
Vishal Bhatia0112
binary_search возвращает логическое значение в соответствии с его поиском, но нам нужен итератор для того же, что возвращается find() или find_if (), но опять же они используют линейный подход(плохо).
Я думаю написать свою собственную функцию binary_search, которая вернет итератор в найденную структуру.
Любые другие предложения приветствуются.
Рейтинг:
0
Rick York
Вот пример того, как использовать binary_search :
bool Compare( const Client& lhs, const Client& rhs )
{
return ( lhs.client_id < rhs.client_id );
}
bool DoesClientExist( const Client &client, std::vector <Client> clientVec )
{
return binary_search( clientVec.begin(), clientVec.end(), client, Compare );
}
Vishal Bhatia0112
binary_search возвращает логическое значение в соответствии с его поиском, но нам нужен итератор для того же, что возвращается find() или find_if (), но опять же они используют линейный подход(плохо).
Я думаю написать свою собственную функцию binary_search, которая вернет итератор в найденную структуру.
Любые другие предложения приветствуются.
Rick York
Я не знаю вариации binary_search, которая возвращает итератор, но я был бы очень удивлен, если бы кто-то еще не сделал его. Несмотря на это, код находится в алгоритме, и кажется, что было бы довольно легко настроить его на возврат итератора вместо логического значения.
Rick York
Немного поискав, я нашел эту маленькую статью : http://wordaligned.org/articles/binary-search. Там есть несколько очень хороших советов.