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

Langage C++ Discussion :

Probléme iterator vector


Sujet :

Langage C++

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 26
    Points : 20
    Points
    20
    Par défaut Probléme iterator vector
    salut,
    Je suis en train de coder Karger min-cut algorithm, et j'utilise un tableau de vector comme structure de données.

    Mon problème est au niveau de l'itération, le code compile sans erreur mais en run-time une erreur segmentation fault s'élève sur ce bout de code et je comprends pas la raison même en changeant le modèle d'itération.

    code 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // déclaration de tbl
    // vector<int> tbl[SIZE];
     
    for (unsigned long j = 0, n = tbl[i].size(); j < n; ++j)
    {
        if (tbl[i].at(j) == w)
            tbl[i].at(j) = v;
    }
    code 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (vector<int>::iterator it = tbl[i].begin(); it != tbl[i].end(); ++it)
    {
        if (*it == w)
            *it = v;
    }
    pouvez vous m'aider svp.

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Bonsoir

    Tu parles d'un tableau, mais tu donnes le code pour deux tableaux imbriqués. A priori, le problème viendrait plus de tbl[i] que de at(j) (qui en peut renvoyer que des std::out_of_range)

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    Puisque vector est un tableau dynamique (conteneur) et je déclare un tableau de vector, ça veut pas dire deux tableaux imbriqués?

  4. #4
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    J'avais pas vu que tu parlais dans ton premier post d'un tableau de vector. Désolé

    (bon, en pratique, on parle souvent de tableau pour les vector, c'est la même chose, + ou - dynamique)

    Bref, dans tous les cas, le problème vient probablement pas du code donné mais de la boucle qui parcours tbl

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    le code est bon dans la mesure où i ne prend pas une valeur extravagante.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    bonjou,
    merci pour vos réponses.

    voilà le code des boucles imbriqués:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // sz = SIZE
    for (int i = 0; i < sz; i++)
    {
    	if (i != branch && i!= vertex)
    	{
    		for (vector<int>::iterator it = tbl[i].begin; it != tbl[i].end(); ++it)
    		{
    			if (*it == w)
    				*it = v;
    		}
    	}
    }
    les deux boucles de la première post j'ai deux erreurs différents:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (unsigned long j = 0, n = tbl[i].size(); j < n; ++j)
    {
        if (tbl[i].at(j) == w)
            tbl[i].at(j) = v;
    }
    Pour ce code le programme compile mais à l'execution et pour i = 0 j'ai l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Program received signal SIGSEGV, Segmentation fault.
    pour le deuxième code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (vector<int>::iterator it = tbl[i].begin; it != tbl[i].end(); ++it)
    {
    	if (*it == w)
    		*it = v;
    }
    j'ai une erreur à la compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    conversion from '<unresolved overloaded function type>' to non-scalar type 'std::vector<int>::iterator {aka __gnu_cxx::__normal_iterator<int*, std::vector<int> >}' requested
    merci.

  7. #7
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Il manque un parenthèse à begin
    Par contre, à part cela, il n'y a pas de problème avec le code
    Peux tu envoyer une archive contenant un code minimal reproduisant le bug ?

  8. #8
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    Salut,
    Ci-joint un fichier contenant la fonction main et la fonction en question.
    merci pour votre aide.
    Fichiers attachés Fichiers attachés

  9. #9
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    Peux tu envoyer une archive contenant un code minimal reproduisant le bug ?
    J'aurais du précisé "compilable"...

    Bon, rien qui explique ton bug dans ce que j'ai vu... mais comme il y a plein de fonction qui font je sais pas quoi, c'est dur

    et en bug pas à pas, tu as quoi ? pas de variables hors limite ?

  10. #10
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    Pas de problème, et je pense que vous aurez besoin du fichier de test et les logs de valgrind et gdb.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Problème création d'iterator ( Vector et Map )
    Par LittleWhite dans le forum SL & STL
    Réponses: 11
    Dernier message: 27/03/2009, 22h00
  2. Réponses: 2
    Dernier message: 07/12/2007, 02h19
  3. Problème avec Vector et Iterator
    Par boudincweole10 dans le forum Langage
    Réponses: 1
    Dernier message: 08/04/2007, 07h26
  4. Problème de vector
    Par jamesleouf dans le forum SL & STL
    Réponses: 13
    Dernier message: 22/03/2006, 22h36
  5. problème class vector
    Par Pe04 dans le forum SL & STL
    Réponses: 2
    Dernier message: 27/02/2006, 10h45

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