返回指向C ++类中矢量的指针

时间:2014-05-30 11:56:58

标签: c++ pointers vector

我正在使用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;
}

正如你所看到的,在类中我有一个返回指针向量的方法,当我调用它时,我认为我正在接收一个指针向量,但是在编译时我有错误(无法转换类型) ....等)

我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果需要返回指向底层数组的指针,请使用(使用自己的拼写)

Vertex* getVertexs()
{
    return vertexs.data();
}

请注意,C ++标准保证向量中的数据是连续的,因此这段代码是安全的。

请注意,如果以任何方式修改了向量,则返回的指针可能无效。