je la classe C++ suivante,Comment supprimer un élément d'un vecteur d'objets en C++?
class rec
{
public:
int width;
int height;
};
Et dans ma fonction principale que j'ai un vecteur avec rec
objets,
rec r1,r2,r3;
r1.height = r1.width = 1;
r2.height = r2.width = 2;
r3.height = r3.width = 3;
vector<rec> rvec = { r1,r2,r3 };
Maintenant, je veux effacer un élément de rvec
à l'appel de méthode suivante ,
rvec.erase(remove(rvec.begin(), rvec.end(), r_remove), rvec.end());
Mais j'eu cette erreur:
C2678: binary '==': no operator found which takes a left-hand operand of type 'rec' (or there is no acceptable conversion)
Vous devez implémenter l'opérateur ==() pour la classe rec pour permettre la comparaison entre les objets rec. C'est ce que remove utilise pour trouver l'entrée qui correspond à r_remove. –
Vous pouvez également essayer ['std :: remove_if'] (http://fr.cppreference.com/w/cpp/algorithm/remove) dans le cas où vous ne pouvez pas implémenter' operator == 'pour votre classe – StoryTeller
Pour référence future, vous devriez noter que chaque algorithme comme un ensemble d'exigences pour les types qu'il accepte. Lisez la documentation et découvrez quelles sont ces exigences. [cppreference] (http://fr.cppreference.com/w/cpp/algorithm) est un bon endroit pour ajouter un signet. – StoryTeller