基于边的权重在优先级队列中存储顶点(C++)

基于边的权重在优先级队列中存储顶点(C++),c++,algorithm,priority-queue,vertex,C++,Algorithm,Priority Queue,Vertex,我很难实现我的代码。基本上,我创建了一个名为vertex的类,每个顶点指向其他顶点,创建一个图和一个邻接列表,为了实现这一点,我在我的类vertex中创建了一个名为Edge的结构。每条边都有一个权重和它所指向的顶点。这是我的代码,让你更好地理解 Vertex { public: void setPQ() { for( int i = 0; i < adjList.size(); ++i) { pq.push( adjList[i].node ); }

我很难实现我的代码。基本上,我创建了一个名为vertex的类,每个顶点指向其他顶点,创建一个图和一个邻接列表,为了实现这一点,我在我的类vertex中创建了一个名为Edge的结构。每条边都有一个权重和它所指向的顶点。这是我的代码,让你更好地理解

Vertex {
public:
    void setPQ() {
    for( int i = 0; i < adjList.size(); ++i) {
        pq.push( adjList[i].node );
    }
}
private:
    struct Edge {
        Vertex* node; // The vertex the edge is pointing to
        int thatVertex;
        float weight;

        Egde( ) {
            thatVertex = 0;
            weight = 0;
        }
        bool operator<( const Edge & rhs) {
            return this.weight < rhs.weight;
        }
    };

    vector< Edge > adjList;
    int thisVertex;
    int dist;
    bool known = false;
    piority_queue< Vertex*, vector<Vertex*>, Edge > pq;
};
我正在实现Dijkstra算法,所以我知道和dist以及其他东西。我要做的是,在每个顶点或节点都有一个优先级队列,在该队列中,我要存储它指向的所有顶点。换句话说,我想存储与该顶点相邻的所有顶点,并使用边的权重对其进行排序。我该怎么做呢?我需要比较一条边的权重,然后存储该边包含的顶点。我不知道如何做到这一点,我甚至不认为我的实现是正确的。有人能帮我解释一下我该怎么做吗


谢谢

您能使用Edge的优先队列吗?你差不多已经有了。优先级队列pq;在那之后,让你的优势:operator@dwcanillas我不能,我需要访问重量最小的顶点。什么是比较器类?您仍然可以这样做,pq.top.nodeor或者您想按每个顶点的总重量排序吗?如果是这样的话,为什么要在vertex类本身中创建优先级队列?@dwcanillas,我需要将其作为赋值来执行,这是我使用优先级队列访问具有最小边的顶点的要求。我觉得自己很愚蠢。我很抱歉,有时候当我在某件事情上停留太久,我看不到明显的答案。非常感谢你。