keiko11245
Messages postés48Date d'inscriptionlundi 1 septembre 2003StatutMembreDernière intervention 5 avril 2006
-
20 déc. 2005 à 12:08
keiko11245
Messages postés48Date d'inscriptionlundi 1 septembre 2003StatutMembreDernière intervention 5 avril 2006
-
20 déc. 2005 à 13:27
Voilà mon problème j'ai fait le programme suivant :
#include <list>
#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 "<
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
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 20 déc. 2005 à 13:17
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 <list>
#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;