Ich möchte in einem Vektor von Object-Zeigern für ein passendes Objekt finden. Hier ist ein Beispielcode, um mein Problem zu veranschaulichen:Wie finde ich Algorithmus mit einem Zeigervektor auf Objekte in 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"));
Ich möchte das zweite Element in den Vektor geschoben finden. Da Vektor jedoch als eine Pointers-Auflistung definiert ist, verwendet C++ meinen überladenen Operator nicht, sondern verwendet einen impliziten Zeigervergleich. Was ist der bevorzugte C++ - Lösungsansatz in dieser Situation?
Ich denke, es muss find_if im Code sein? – esrkan
In der Tat - Sie können nur std :: find() ein Prädikat in einem Container von Prädikaten! – MSalters
James können Sie weitere Erklärung ab dieser Zeile hinzufügen pointer_values_equal eq = {to_find}; – yesraaj