Quiero encontrar en un vector de punteros de objeto para un objeto coincidente. He aquí un código de ejemplo para ilustrar mi problema:Cómo usar el algoritmo de búsqueda con un vector de punteros a objetos en C++?
class A {
public:
A(string a):_a(a) {}
bool operator==(const A& p) {
return p._a == _a;
}
private:
string _a;
};
vector<A*> va;
va.push_back(new A("one"));
va.push_back(new A("two"));
va.push_back(new A("three"));
find(va.begin(), va.end(), new A("two"));
Quiero encontrar el segundo elemento empujado en el vector. Pero dado que vector se define como una colección de punteros, C++ no utiliza mi operador sobrecargado, sino que usa una comparación de puntero implícita. ¿Cuál es la forma preferida de solución de C++ en esta situación?
Creo que debe ser find_if en el código? – esrkan
De hecho, solo puede std :: find() un predicado en un contenedor de predicados. – MSalters
james puede agregar más explicaciones sobre esta línea pointer_values_equal eq = {to_find}; – yesraaj