begin process at 2012 02 11 23:22:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Problème de manipulation des Iterator de la STL


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de manipulation des Iterator de la STL

mardi 20 décembre 2005 à 12:08:19 | Problème de manipulation des Iterator de la STL

keiko11245

Voilà mon problème j'ai fait le programme suivant :

#include <list>
#include <iostream>

using namespace std;
void getItem(list<int> L, list<int>::iterator &  iter){
    int i=1;
    iter=L.begin();
    while(i<3){
        iter++;
        i++;
    }
    cout<<"la valeur trouvée dans la fonction = "<<(*iter)<<"\n";
}
int main(){
    list<int> L;
    list<int>::iterator iter;
    int i=1;

    L.push_back(0);
    L.push_back(1);
    L.push_back(2);
    L.push_back(3);
    L.push_back(4);
   
    iter=L.begin();
    while(iter != L.end()){
        cout<<"Le "<<i<<"eme element est : "<<(*iter)<<"\n";
        iter++;
        i++;
    }

    getItem(L,iter);
    cout<<"val = "<<(*iter)<<"\n";

    if(iter!=NULL){//si l'iterateur à une valeur
        int val = (*iter);

        cout<<"la valeur trouvee est : "<<val<<"\n";
    }
}


La trace d'exécution est la suivante :
Le 1eme element est : 0
Le 2eme element est : 1
Le 3eme element est : 2
Le 4eme element est : 3
Le 5eme element est : 4
la valeur trouvée dans la fonction = 2 //la valeur est correcte
val = 48
la valeur trouvee est : 48

Et mon problème se situe à la ligne en rouge. Dans la fonction que j'appelle la valeur contenu dans l'itérateur est bien 2 mais quand je retourne dans le programme principal, il me donne une valeur à la con et je vois pas pourquoi.

Si quelqu'un peut me donner un coup de main je serai très contente .

Ah l'informatique c'est bien quant même quand ça marche
mardi 20 décembre 2005 à 13:17:05 | Re : Problème de manipulation des Iterator de la STL

vecchio56

Administrateur CodeS-SourceS
if(iter!=NULL) // aucun sens, on écrit if(iter != L.end()) Le problème est que tu passe ta liste par valeur, donc iter ne pointe plus sur la bonne liste/ Voici une version corrigée #include #include using namespace std; void getItem(list& L, list::iterator & iter){ int i=1; iter=L.begin(); while(i<3){ iter++; i++; } cout<<"la valeur trouvée dans la fonction = "<<(*iter)<<"\n"; } int main(){ list L; list::iterator iter; int i=1; L.push_back(0); L.push_back(1); L.push_back(2); L.push_back(3); L.push_back(4); iter=L.begin(); while(iter != L.end()){ cout<<"Le "<
mardi 20 décembre 2005 à 13:27:56 | Re : Problème de manipulation des Iterator de la STL

keiko11245

Merci, effectivement ça marche beaucoup mieux. J'avais penser à l'itérateur mais pas à la list, j'ai honte



Ah l'informatique c'est bien quant même quand ça marche


Cette discussion est classée dans : valeur, element, push, back, iter


Répondre à ce message

Sujets en rapport avec ce message

aide en c++ [ par cppfr ] pourriez vous me fournir un exemple de push backcar je narrive pas a créer une class push back, ou me donner un tuto sur le push back MERCI a tous Problème de fuite mémoire [ par franchouze ] Bonjour, Pour vérifier les fuites mémoires de mon programme j'utilise valgrind. Voici "l'oubli" de libération détecté par valgrind (ligne avant la Problème avec la valeur NULL [ par pcmanprogrammeur ] Bonjour;Voici ma classe :    class Element    {        public:        Compte *donnee;        Element *suivant;        Element();        Element(Compte à propose de vecteur de char [ par diable007 ] bonjour tout le monde,voila mon codestring leopard(<span style="color: Deux meme string dans un vecteur. [ par frayst ] Voila je vous explique ma situation : J'ai un vecteur string dans lequel jattribue des mots (dont certains sont les memes = Bonjour et Salut) : vector Vecteur et Polymorphisme [ par Guiiil ] Bonjour à tous,Je suis en train de réaliser un petit jeu de rôle et je bloque sur un point :Pour être clair, mon programme ne veut pas que Heros[2] at STL : Comment afficher les élements dans un vector dans un endroit voulu [ par Razily ] Bonjour à tous ; je voudrai avoir de ce code un affichage de ce genre: [code=cpp] 1 a b c d e f g h 1 8 t c f d r f c t 8 7 p p p p p p p p 7 6 _ _ Quel est l'équivalent de vector<int> (c++) en C ? Et quel est celui de ....push_back(...); en C ? [ par ndubien ] Salut, Quel est l'équivalent de vector (c++) en C ?Et quel est celui de ....push_back(...); ?<font size Vector : problème [ par Clonk ] Bonjour,voilà, j'ai un problème avec de vector, voilà en gros comment je marche:J'ai 2 vectors : un de sommets, un autre d'arrete (de segment)je parco urgent svp exo sur les tableaux [ par blastmanu ] bonjour tt le monde voila mon probleme:Soit un tableau Tab1 de taille maxi Tmax=35 On veut:-Remplir Tab1 en demandant les valeur a l'utilisateur. Le n


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales