find と binary_search を見ましたが、findはベクトルがソートされているという事実を利用せず、binary_searchはtrueまたはfalseを返しますが、値を見つけました。両方の長所を提供できる機能はありますか?
メソッドがあります std::equal_range
は、目的の値を保持するサブセットの下限と上限を含むペアを提供します。ペアの両方のアイテムが同一である場合、探していた値は存在しません。
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;
}