Если вы хотите найти точную пару, вам нужно указать пару binary_search
, например,
if (std::binary_search(vect.begin(), vect.end(), std::pair{3, 42}))
// ... found
Обратите внимание, что здесь вам не нужна пользовательская функция compare
. Компаратор по умолчанию делает правильные вещи. (Фактически, вы должны использовать тот же компаратор, что и для sort
элементов, в противном случае binary_search
будет разбит).
Обратите внимание, что до c ++ 17, вам необходимо предоставить аргументы шаблона для pair
, например,
if (std::binary_search(vect.begin(), vect.end(), std::pair<int,int>{3, 42}))
// ... found
Если вы хотите найти позицию найденного элемента, вы можете использовать lower_bound
например,
auto lb = std::lower_bound(vect.begin(), vect.end(), std::pair<int,int>{3, 42});
if (lb != vect.end())
std::cout << "Element found at position "
<< std::distance(vect.begin(), lb);
Также, пожалуйста, не используйте #include <bits/stdc++.h>
или using namespace std;