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 :

la difference entre deux std::vector


Sujet :

C++

  1. #21
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    Dans ce cas, tu crées toujours des vecteurs d'itérateurs, pas d'arêtes, et les mêmes problèmes se posent pour leur tri...

  2. #22
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Points : 0
    Points
    0
    Par défaut
    J'ai modifié la fonction:

    std::vector<int*> edgesdiff(Graph const& g1,Graph const& g2)
    retourne la différence entre les arêtes de deux graphe dans un vector,
    ici il y a un petit problème que je ne comprends pas, les valeurs insérées sont juste mais lorsque je fais l'affichage pour vérifier j’obtiens les adresses au lieu des valeurs!

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    std::vector<int*>  edgesdiff(Graph const& g1,Graph const& g2){
     
     
    std::vector<edge_iter> v1;
    std::vector<edge_iter> v2;
    //std::vector<int [3]> result;
     
    std::vector<int*> result = std::vector<int*>();
     
    edge_iter ei, ei_end;
    for (tie(ei, ei_end) = edges(g1); ei != ei_end; ++ei){v1.push_back(ei);}
    for (tie(ei, ei_end) = edges(g2); ei != ei_end; ++ei){v2.push_back(ei);}
    cout<<"***Insertion diff***"<<endl;
    for(auto x:v1){if(!edgeexistinavector(g1,x,g2,v2)){
    int t[3];
    vertex_t from = source(*x, g1);
    t[0]=g1[from].id;
    cout<<"g1[from].id="<<g1[from].id<<endl;
    vertex_t to = target(*x, g1);
    t[1]=g1[to].id;
    cout<<"g1[to].id="<<g1[to].id<<endl;
    edge_t edg = edge(from, to, g1);
    t[2]=g1[edg.first].label;
    cout<<"g1[edg.first].label="<<g1[edg.first].label<<endl;
    result.push_back(t);
    }
    }

    Voila le code source complet: http://pastebin.com/wxTeABhU

  3. #23
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    Comme result est un vecteur de pointeurs sur int (std::vector<int*>), il est bien normal que tu tombes sur des adresses et pas sur des valeurs...
    Si tu veux obtenir les valeurs dans les tableaux sur lesquels les éléments de result pointent, il faut que tu ailles les chercher, par ex:

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void afficheValeurs(int* pi) {
      std::cout << '['  
      for (unsigned u = 0; u < 3; ++u) {
        std::cout << pi[u] << " ";
      }
      std::cout << ']';
    }

  4. #24
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Points : 0
    Points
    0
    Par défaut
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      std::cout << '['  
      for (unsigned u = 0; u < 3; ++u) {
        std::cout << pi[u] << " ";
      }
      std::cout << ']';

    ça donne toujours des adresse mais le problème à été résolu en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<std::<array<int, 3>>
    Merci a vous.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. la difference entre deux std::unordered_set
    Par mohsenuss91 dans le forum C++
    Réponses: 7
    Dernier message: 21/04/2015, 17h30
  2. Réponses: 7
    Dernier message: 03/02/2006, 13h50
  3. [EXCEL] difference entre deux fichiers
    Par Mokhtar BEN MESSAOUD dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/01/2006, 11h12
  4. [PIL] Difference entre deux images
    Par t_om84 dans le forum Calcul scientifique
    Réponses: 4
    Dernier message: 26/12/2005, 12h45
  5. difference entre deux requetes
    Par rdams dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/12/2005, 09h38

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