web-dev-qa-db-ja.com

ソートされたC ++ベクトルで値を見つける方法は?

findbinary_search を見ましたが、findはベクトルがソートされているという事実を利用せず、binary_searchはtrueまたはfalseを返しますが、値を見つけました。両方の長所を提供できる機能はありますか?

32
user2813274

メソッドがあります std::equal_range は、目的の値を保持するサブセットの下限と上限を含むペアを提供します。ペアの両方のアイテムが同一である場合、探していた値は存在しません。

14
paxdiablo
template<class T, class U>
bool contains(const std::vector<T>& container, const U& v)
{
    auto it = std::lower_bound(
        container.begin(),
        container.end(),
        v,
        [](const T& l, const U& r){ return l < r; });
    return it != container.end() && *it == v;
}
2