Rom1PL
Messages postés12Date d'inscriptionvendredi 30 novembre 2007StatutMembreDernière intervention 4 mars 2008
-
29 févr. 2008 à 10:59
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 2008
-
29 févr. 2008 à 17:13
Bonjour,
J'aurais deux petites questions au sujet des méthodes de la classe vector en C++.
1) J'utilise la fonction erase pour supprimer un élément de mon vecteur mais mon compilo me donne l'erreur suivante "Could not find a match for 'vector >::erase(int)'.
voici le code de ma fonction qui pause problème :
Je souhaite tout simple supprimer l'élément qui se trouve à l'index donné dans mes deux vecteurs SelectedProducts et SelectedAmount. En clerc je voudrais supprimer SelectedProducts[indexProduct] et SelectedAmounts[indexProduct].
J'ai pourtant vérifier sur des sites internets et la fonction erase utilise bien l'index de l'élément à supprimer en paramètre.
2) Mon autre question. Est-ce que quelqu'un sait s'il existe un équivalent de la fonction indexOf(ElementRecherché) des vecteurs JAVA en C++. En fait j'ai un vecteur de pointeurs de Produit et j'aimerais une fonction qui me renvoi l'index d'une adresse de produit que je recherche dans mon vecteur.
Un truc du genre MonVecteurDeProduit.indexOf(&ProduitRecherché)
Rom1PL
Messages postés12Date d'inscriptionvendredi 30 novembre 2007StatutMembreDernière intervention 4 mars 2008 29 févr. 2008 à 11:37
Je viens de jeter un coup d'oeil sur le lien que tu viens de me donner mais je ne parvient pas à trouver mon erreur. En effet ils disent bien que la fonction erase prend comme paramètre la position de l'élément qui doit être supprimé. Or c'est ce que je fait lorsque je fais SelectedProducts.erase(indexProduct);
J'ai également essayé de faire unSelectedProducts.erase(&Product); mais cela ne donne rien de mieux.
Merci beaucoup pour ton aide.
Si desfois tu vois l'erreur...
nickydaquick
Messages postés416Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention19 décembre 20133 29 févr. 2008 à 16:15
Salut
void Basket::DeleteProduct(vector::iterator indexProduct){
SelectedProducts.erase(indexProduct);
SelectedAmounts.erase(indexProduct);
NumberOfItems = SelectedAmounts.size();
}
je suis heureux de faire partie d'une grande famille ...!
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 29 févr. 2008 à 17:11
Question 1
void Basket::DeleteProduct(int indexProduct){
SelectedProducts.erase(SelectedProducts.begin() + indexProduct); // opérateur d'addition sur les itérateurs.
SelectedAmounts.erase(SelectedProducts.begin() + indexProduct);
NumberOfItems = SelectedAmounts.size();
}
Marche seulement pour certain type d'itérateur, notamment ceux des std::vector.
Question 2
normalement tu as la fonction std::find du header "algorithm". Il s'agira ici d'une comparaison entre pointeur par défaut. Le plus simple étant de refaire toi meme la fonction de recherche.