Encontre elementos de std :: set por comparação personalizada com valor de tipo diferente
Considere o seguinte exemplo de brinquedo de umstd::set
com um comparador personalizado:
#include <set>
struct A {
A() : a(cnt++) {}
const int a;
static int cnt;
};
int A::cnt = 0;
struct comp {
bool operator()(const A& left, const A& right)
{
return left.a < right.a;
}
};
int main()
{
std::set<A, comp> sa;
for (int i = 0; i < 10; ++i) sa.insert(A());
return 0;
}
Observe queA
simplesmente não pode ser criado a partir de um número inteiro.
Eu gostaria de procurar umA
com um determinado valor deA::a
nosa
, sem construir um objeto temporário do tipoA
, ou seja, estou procurando por algo como
sa.find(4)
com um comparador personalizado que permite a comparação direta de números inteiros com objetos do tipoA
. Isso é possível?