acces à un iterateur de vecteur par son index
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
Code:
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);
} |
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...
Un peu comme si on réalisait un code qui prendrait la forme
Code:
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);
} |
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...
Mais je voudrais confirmation/infirmation de la chose...
Merci d'avance ;)