Ich habe Klasse Human mit 2 Eigenschaften erstellt: Name und Alter, und ich möchte alle Elemente in den geschachtelten Vektoren des Typs Mensch, die Alter haben == 20, hier ist meine ImplementierungLöschen von Elementen mit remove_if in einem geschachtelten Vektor
class Human
{
public:
string name;
int age;
Human(string name,int age):name(name),age(age){}
bool isAge20(const Human human) {return human.age == 20;}
static void removeElement(vector <vector <Human> > vvi)
{
vector< vector<Human> >::iterator row;
vector<Human>::iterator col;
for (row = vvi.begin(); row != vvi.end(); row++) {
row->erase(std::remove_if(row->begin(), row->end(), isAge20), row->end());
}
};
Merkwürdig, wenn ich eine solche verschachtelte Vektor und rufen sie die removeElement Funktion damit, erhalte ich folgende Fehlermeldung: muss ‚verwenden. 'oder' -> 'Zeigerfunktion in .. aufrufen. Was kann die Ursache sein?
[OT]: Wenn Sie 'vvi' nach Wert übergeben, ändern Sie nur den Vektor lokal. – Jarod42
'isAge20' sollte' statisch' sein. – Jarod42
@ Jarod42 Danke, das hat wirklich funktioniert, jede Erklärung warum:? –