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++

  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

  7. #7
    Membre confirm�
    Inscrit en
    Ao�t 2008
    Messages
    135
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2008
    Messages : 135
    Par d�faut dieux seul sais
    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
         for(iter;iter!=--cont.end();++iter){
                                           de1=iter->first;
                                           fi1=iter->second;
                                           iter++;
                                           de2=iter->first;
                                           fi2=iter->second;
                                           iter--;
                                               if ((fi1) < (de2)){
                                                   ofile<<fi1<<"\n"<<de2<<";";
                                                   if ((maxx)>maxx){
                                                                   cout<<"un max a ete trouver"<<endl;
                                                                   tmp = iter->second;
                                                                   premiere.chr_file(tmp,"pts");
                                                                   }
                                                   }
                                                }
    c'est la version cochon que je vais remplacer, mais qui marche maintenant,
    ce n'�tait probablement qu'un d�passement de la taille de la map, qui me sorter une valeur au pif de la ram.

    raw2:
    20080818174343;20080819035836
    20080819040859;20080819052904
    20080819053137;20080819202135
    20080819205231;20080821060059
    20080821185212;20080821193812
    20080821195258;20080821214434
    20080822042952;20080822205053
    20080824211104;20080825063112
    20080825203016;20080826052047
    20080826052614;20080826070634
    20080826071409;20080826075202
    20080826080254;20080826082647
    20080827065252;20080827074216
    20080827114350;20080827121347
    20080827121356;20080827123853
    20080827132520;20080827135328
    20080827152339;
    merci. et bonne journ�e

  8. #8
    Membre confirm�
    Inscrit en
    Ao�t 2008
    Messages
    135
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2008
    Messages : 135
    Par d�faut
    oui, et en plus la comparaison a une int[], m'avais bien montrer que je sauter une valeur a chaque boucle (la liste finale est deux fois plus longue) lol

+ 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