IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

map<>::const_iterator iter et iter++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 135
    Par défaut map<>::const_iterator iter et iter++
    bon soir,
    et ben ces temps ci je doit dire que vous me filer vraiment un grand coup de main, donc merci encore.

    voila mon problème que je n'ai ni réussi a résoudre par une comparaison, a un exemple plus simple, ni par le debugage:
    (violation d'accès (erreur de segmentation) ect.),
    mais en dehors du debug, pas de soussit ça s'exécute, c'est juste le résultat qui ... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
         map <long long int, long long int> cont;
     
         ofstream ofile("C:\\raw2",ios_base::trunc);
     
         premiere.get_pts(cont);
         map<long long int,long long int>::const_iterator iter = cont.begin();
         ofile<<iter->first<<";";
         for(iter;iter!=(cont.end()--);++iter){
                                                if ((iter->second) < ((++iter)->first)){
                                                   ofile<<(iter--)->second<<"\n"<<(iter++)->first<<";";
                                                   if (((iter)->second)>maxx){
                                                                   cout<<"un max a ete trouver"<<endl;
                                                                   tmp = iter->first;
                                                                   premiere.chr_file(tmp,"pts");
                                                                   }
                                                   }
                                                }
    le fichier raw2 me donne:
    20080818174343;20080819220951
    20080819205231;20080821210651
    20080821195258;20080822054342
    20080822042952;20080825221813
    20080825203016;20080826060604
    20080826052614;20080826075202
    20080826071409;20080827072337
    20080826080254;20080827135328
    20080827121356;17237545221799356
    20080827152339;
    c'est l'avant dernière ligne le nombre: 17237545221799356....
    qui, je le souhaiterai, soit détecter par.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (((iter)->second)>maxx){
    la seul chose que j'ai comprise, c'est qu'il y a un certain probleme avec mes incrementation, mais j'ai pas réussi a corriger l'erreur.
    si quelqu'un a une idee....

  2. #2
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 135
    Par défaut corection
    pardon:
    maxx est fixé a 20090000000000
    par le code qu'on voit pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IniRead(chem,"parametre","max",max);
    from_string(max, maxx);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 142
    Par défaut
    Bonsoir,

    Ne le prends pas mal, mais ton code est tout simplement illisible.
    Réécris-le en enlevant tous ces -- et ++ de partout (excepté de ++iter du for), et tu y verras toi-même plus clair.
    Et si tu ne vois pas toi-même ton erreur, reviens nous voir et nous serons aptes à t'aider.

  4. #4
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 135
    Par défaut mouai
    pourquoi pas, mais je vois pas trop comment:
    je doit comparer le second élément de la pair x,
    au premier élément de la pair x+1...

    donc bref, je vais essayer d'aborder ce problème d'un autre coter.

    juste, je me trompe pas en pensant:
    que ce soit dans une instruction if (xxxxxx), ou autre,
    l'instruction iter++ ou ++iter incrémente l'iterateur, de façon définitive,
    c'est bien ça???

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 142
    Par défaut
    Citation Envoyé par neismarspra Voir le message
    pourquoi pas, mais je vois pas trop comment:
    je doit comparer le second élément de la pair x,
    au premier élément de la pair x+1...
    Une idée intéressante serait d'utiliser un deuxième itérateur incrémenté au même moment qu'iter, mais initialisé à begin() + 1 avant la boucle.

    Citation Envoyé par neismarspra Voir le message
    juste, je me trompe pas en pensant:
    que ce soit dans une instruction if (xxxxxx), ou autre,
    l'instruction iter++ ou ++iter incrémente l'iterateur, de façon définitive,
    c'est bien ça???
    Absolument, c'est pour ça que c'est vraiment bordélique d'en mettre partout.
    À noter également ceci (valable aussi bien pour un int, qu'un pointeur ou un itérateur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int i, n1, n2;
     
    i = 0;
    n1 = i++;
    //ici, on a i = 1 mais n1 = 0
     
    i = 0;
    n2 = ++i;
    //ici, on a i = 1 et n2 = 1

  6. #6
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 135
    Par défaut ok
    ok, merci
    j'ai commencer avec une vielle méthode (lourde niveau cpu et code, mais c'est sur qu'elle marche). après ça je vais passer a l'idée du second iterateur
    et je poste la solution cette matinée.

    mais la c'est clope et au lit

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. remplacer string::iterator par iterator
    Par jfjobidon dans le forum Débuter
    Réponses: 2
    Dernier message: 23/04/2015, 16h50
  2. Test d'une String dans un Iterator ( <s:iterator, <s:if )
    Par chezwam56 dans le forum Struts 2
    Réponses: 11
    Dernier message: 23/08/2011, 16h31
  3. Iterator et iterator()
    Par tanguy.L dans le forum Langage
    Réponses: 9
    Dernier message: 12/11/2008, 01h23
  4. Map::iterator et template
    Par kast_or dans le forum Langage
    Réponses: 3
    Dernier message: 28/11/2006, 19h15
  5. initialisation d'une map et d'un iterator
    Par petitmic dans le forum C++
    Réponses: 2
    Dernier message: 12/04/2006, 23h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo