我正在使用Graphs,我有一个带有Vertexs矢量的Graph Class,我需要返回一个指向该向量的指针才能使用它,但是我做了一些错误并且没有工作。
class Graph{
public:
void AddVertex(int vertex){
Vertex newVertex(vertex);
vertexs.push_back(newVertex);
printf(" - Vertex %i added to vertexs\n", newVertex.getNum());
}
void CreateEdge(int startVtx, int destVtx, int dist){
vertexs[(startVtx-1)].AddEdge(&vertexs[(destVtx-1)],dist);
//vertexs[(destVtx-1)].AddEdge(&vertexs[(startVtx-1)],dist); //SI VOLEM QUE LES ARESTES SIGUIN BIDIRECCIONALS
}
Vertex* getVertex(int num){ return &vertexs[(num-1)]; }
Vertex* begin(){ return &vertexs[0];}
Vertex* end(){ return &vertexs[(vertexs.size())];}
vector<Vertex*> getVertexs(){ return &vertexs[0];}
vector<Vertex>::iterator getItVertexs(){
std::vector<Vertex>::iterator it = vertexs.begin();
return it;
}
int NumVertexs(){ return vertexs.size(); }
private:
vector<Vertex> vertexs;
};
int bfs(Graph* graph){
int distance[graph->NumVertexs()];
int level = 1;
vector<Vertex*> fathers = graph->getVertexs();
return 1;
}
int main(int argc, char *argv[]){
Graph graph;
bfs(&graph);
return 0;
}
正如你所看到的,在类中我有一个返回指针向量的方法,当我调用它时,我认为我正在接收一个指针向量,但是在编译时我有错误(无法转换类型) ....等)
我做错了什么?
谢谢!
答案 0 :(得分:1)
如果需要返回指向底层数组的指针,请使用(使用自己的拼写)
Vertex* getVertexs()
{
return vertexs.data();
}
请注意,C ++标准保证向量中的数据是连续的,因此这段代码是安全的。
请注意,如果以任何方式修改了向量,则返回的指针可能无效。