S
danooh schrieb:
Das Ganze soll mittels einer Klasse 'DistGraph' implementiert werden.
Und diese Klasse muss (meiner Meinung nach) fünf Attribute aufweisen:
int knoten, kanten, start, ende;
double kosten;
Das kommt aber nicht so ganz hin.
Offenbar willst du einen Graphen mit Knotengewichten/kosten modellieren. Ein Graph besteht dabei aus n Knoten und m Kanten (die ersten 2 Zahlend einer Datei). Jede Kante wiederum besteht aus einem Start- und einem Endknoten und einem Gewicht (die folgenden zeilen deiner Datei).
D.h. du willst deinen Graph einlesen, was beinhaltet, dass du im Zuge dessen Kanten einliest.
Ich würde das in etwa so machen:
#include <fstream>
#include <vector>
#include <algorithm>
#include <iterator>
class Edge
{
std::size_t start;
std::size_t end;
double weight;
public:
friend std::istream& operator >>(std::istream & is, Edge & e)
{
is >> e.start >> e.end >> e.weight;
return is;
}
};
class Graph
{
std::size_t vertices;
std::vector<Edge> edges;
public:
friend std::istream& operator >>(std::istream & is, Graph & e)
{
std::size_t edgeCount;
is >> e.vertices >> edgeCount;
e.edges.resize(edgeCount);
std::copy_n(std::istream_iterator<Edge>(is), edgeCount, std::begin(e.edges));
return is;
}
};
int main()
{
std::ifstream file("graph.txt");
Graph g;
file >> g;
return 0;
}