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...
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...
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
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 << ']'; }
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
Merci a vous.
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::vector<std::<array<int, 3>>
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager