我有这个代码:
#include <iostream>
#include <vector>
#include <list>
using namespace std;
class Graph {
public:
//Create graph with n nodes
Graph(int size);
~Graph();
//Initialize graph
void InitializeGraphWithRandomNum();
private:
vector <list <int*> > *graph;
};
void Graph::InitializeGraphWithRandomNum() {
//Here I want to iterate
for (int i=0; i< graph->size(); i++) {
std::list <int*>::iterator it;
for (it = graph[i].begin(); it< graph[i].end();++it) {
..........
}
}
}
这里有问题。它说
No match for ‘operator=’ in ‘it = (((Graph*)this)->Graph::graph + ((unsigned int)(((unsigned int)i) * 12u)))->std::vector<_Tp, _Alloc>::begin with _Tp = std::list, _Alloc = std::allocator >, std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator*, std::vector > >, typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer = std::list*’ DejkstraAlg.cpp
谢谢 最好的
最佳答案
graph
是指向 vector 的指针,而不是 vector 。要么将其声明为 vector ,要么使用 (*graph)[i].begin()
。
关于c++ - 遍历 vector c++ 中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19655853/