Effacer contenu vecteur

Résolu
cs_0xYg3n3 Messages postés 115 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 8 octobre 2007 - 15 avril 2005 à 10:29
cs_0xYg3n3 Messages postés 115 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 8 octobre 2007 - 16 avril 2005 à 09:53
bonjour
comment pourrais-je effacer le contenu d'une ou plusieurs case d'un vecteur dans une boucle.
exemple:
vector <string> vec;
vector <string>::iterator vec_iter;

for (vec_iter=vec.begin() ; vec_iter <= vec.end() ; vec_iter++)
{
if ( (*vec_iter == "champs") || (*vec_iter=="autrechamps") )
{
vec.erase(vec_iter);
}
}

le soucis: lorsque j'efface le contenu d'une case , vec_iter=chainevide.
Comment faire pour ne pa perdre le contenu de vec_iter? (prochaine case du vecteur)

merci pour vos reponse

5 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
15 avril 2005 à 11:37
erase te retourne un itérateur, il faut que tu l'utilises, et ne pas
incrémenter quand tu fais erase. Par conséquent, la boucle for n'est
pas appropriée:



vector <string> vec;

vector <string>::iterator vec_iter;



vec_iter=vec.begin()

while(vec_iter != vec.end())

{

if ((*vec_iter == "champs") || (*vec_iter=="autrechamps"))

vec_iter = vec.erase(vec_iter);

else

vec_iter++;

}
3
cs_0xYg3n3 Messages postés 115 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 8 octobre 2007
15 avril 2005 à 21:52
Ah j'oubliais



Je souhaiterais avoir un pointeur sur mon vecteur

D'apres la MSDN il suffit de faire:



vector < string > vec;

vec.push_back("test");

vec.push_back("pointeur");



// declaration du pointeur

vector < string >::pointer ptr;

ptr = vec[0];



mais ca ne passe pas a la compile (meme l'exemple fourni dans la MSDN)



PS: j'utilise Visual Studio
0
cs_0xYg3n3 Messages postés 115 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 8 octobre 2007
15 avril 2005 à 22:44
Je rectifies



je souhaite obtenir un pointeur sur le type du vecteur et non sur le vecteur lui meme



Pour l'instant j'ai declare un pointeur du style string * ptr;

Je l'ai fais pointer sur le 1er champ du vecteur ptr = vec[0];

Est ce la meilleure solution ?



merci pour vos reponses
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
15 avril 2005 à 22:51
Un pointeur sur le type du vecteur? Je vois pas ce que tu veux dire par
la. Si tu veux un pointeur sur un élément du vecteur, tu n'a qu'a faire
string* ptr = &vec[0]

(string* ptr = vec[0] ne marchera pas car vec[0] est de sype string et non string*)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_0xYg3n3 Messages postés 115 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 8 octobre 2007
16 avril 2005 à 09:53
Ah effectivement j'ai oubli de preciser l'adresse du premier element (&) dans mon message



Mais bon ma solution fonctionne.

Merci a toi



PS meme si il existe un type pointer dans le vector (je n'arrive pas a m'en servir)
0
Rejoignez-nous