#include <iostream>
#include <vector>
#include <algorithm>
struct X {
explicit X(int val) : val{val} {}
bool operator == (const X&) const = delete;
private:
int val;
};
struct Y {
explicit Y(int val) : val{val} {}
bool operator == (const Y& src) const {
return this->val == src.val;
}
private:
int val;
};
int main() {
X x1(5);
Y y1(12);
Y y2(19);
std::vector<X> vecX{x1, x1, x1};
std::vector<Y> vecY{y1, y2, Y(123)};
auto it1 = std::find(vecY.cbegin(), vecY.cend(), y2);
if(it1 != vecY.cend()) {
std::cout << "Znaleziono element typu Y na pozycji " << std::distance(vecY.cbegin(), it1) << '\n';
} else {
std::cout << "Nie znaleziono elementu typu Y.\n";
}
// To Ci się nie skompiluje bo brak operatora równości dla klasy Y (operator == (...) )
//auto it2 = std::find(vecX.cbegin(), vecX.cend(), x1);
}