/* struct represents edges for a directed graph */
struct Edge {
public:
Edge(int aTo = 0, int aCost = 0) {
to = aTo;
cost = aCost;
}
int to;
int cost;
};
/* Graph object is used store graph using adjacency list
method and implements Dijkstra's Algorithm to produce
the shortest path from vertex s to all other vertices */
class Graph {
public:
vector<int> Dijkstra(int src) const {
// My method (stated below) goes here
}
private:
...
vector<list<Edge> > adjacencyList;
}
Тогда мой вопрос: как пройти по списку ребер, чтобы вставить их в кучу?
Например (Примечание: (#) представляет индекс векторного массива), допустим, мы имеют 3 вершины и представление списка смежности следующее:
(0) 0 --> 1 --> 2 --> null
(1) 1 --> 2 --> null
(2) 2 --> null
Я хочу, чтобы первая вершина, вершина 0, и хочу получить доступ к вершинам 1 и 2, чтобы получить стоимость, чтобы добраться до каждой, чтобы поставить другую структура данных (т.е. куча).
Мой подход был следующим:
for (auto it = adjacencyList.at(0).begin(); it !=
adjancencyList.at(0).end(); it++) {
// use it pointer to access each vertex's cost
}
это приводит к ошибке:
Value of type 'std::__1::__list_const_iterator<Edge, void *>'
is not contextually convertible to 'bool'
Сообщите мне, если необходимы дополнительные разъяснения.