Алгоритм std::find
имеет несколько версий, в некоторых из которых вы можете определить способ сравнения элементов. По умолчанию он просто использует сравнение на равенство ==
.
// v----- found is not a boolean, but an iterator
auto const found = std::find(vector.begin(), vector.end(), element_to_find);
Если равенства недостаточно, вы можете использовать std::find_if
, который принимает предикат для сравнения элементов:
auto const predicate =
[&](auto const& element) {
return element.is_the_one(); // element.is_the_one() returns a boolean
// You can use obj.y here
};
// v----- found is not a boolean, but an iterator
auto const found = std::find_if(vector.begin(), vector.end(), predicate);
Я бы рекомендовал прочитать документацию, чтобы узнать, как обрабатывать возвращаемое значение, если алгоритм поиска.