Salut,
J'ai (peut etre mal) cherché sur le net, et sur le site, mais je n'ai pas trouvé de solution satisfaisante...
J'ai une classe qui utilise un vecteur sur des chaines, et une méthode qui devrait arriver à supprimer l'une des chaine en fonction de son index...
S'il est clair que je dois utiliser la méthode erase des vecteurs, je me trouve confronté au fait qu'il faut lui passer... un iterateur en argument...
Bien sur, je pourrais travailler sous la forme de
Mais je me demandais s'il n'y aurait pas moyen d'obtenir directement l'itérateur sur l'élément dont l'index est donné en argument...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 void Suppress(const unsigned int index) { std::vector<std::string>::iterator it=Description.begin(); for(unsigned int i=0;i<index;i++) { ++it; if(it==Description.end()) throw std::out_of_range("indice hors limite"); } Description.erase(it); }
Un peu comme si on réalisait un code qui prendrait la forme
J'ai bien conscience que, sémantiquement parlant, un itérateur est sensé parcourrir un conteneur de manière... itérative, et non de manière aléatoire, à l'instar de ce que je voudrais faire...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void Suppress(const unsigned int index) { std::string str=Description.at(index);//ou peut etre autre chose, en // somme :p //convertion de str en l'itérateur Description.erase(l_iterateur); }
Mais je voudrais confirmation/infirmation de la chose...
Merci d'avance![]()
Partager