En fait, j'essaye d’implémenter un graph par la méthode de la liste d'adjacence mais j'ai visiblement un problème lorsque j'essaye d'initialiser ce graph dans le constructeur puisque lorsque j’appelle la méthode addEdge, j'ai une erreur du type read access violation.
voici mon fichier h:
#include<list>
#include <queue>
#include <iostream>
class Graph
{
public:
Graph(int vertices);
~Graph();
void addEdge(int weight, int source, int destination);
/*void breadthFirstTraversal(int source);*/
private:
int v;
std::list<std::pair<int, int>> **x;
};
et voici mon fichier cpp:
Graph::Graph(int vertices) : v(vertices)
{
x= new list<pair<int, int>>*[v];
for (int i = 0; i < v; i++)
{
x[i] = new list<pair<int, int>>;
}
}
Graph::~Graph()
{
}
void Graph::addEdge(int weight, int source, int destination)
{
x[source]->push_back(make_pair(weight, destination));
x[destination]->push_back(make_pair(weight, source));
}
Tu peux, mais ton code est la preuve qu'il ne faut pas le faire quand on ne connait pas : tu as un bon gros memory leak sur ta classe...
EDIT:
Même en connaissant (encore plus en connaissant, d'ailleurs), on ne le fait pas
- Edité par dragonjoker 19 janvier 2018 à 8:47:39
Si vous ne trouvez plus rien, cherchez autre chose.
difference entre c **q=new c*[5] et c*q=new c[5] ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Si vous ne trouvez plus rien, cherchez autre chose.
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Architecte logiciel - Software craftsmanship convaincu.
Si vous ne trouvez plus rien, cherchez autre chose.