Vertex
クラスの変数dist
を更新しようとしています。 Vertex
オブジェクトは、Graph
クラス(vertices
)のunordered_map
の値に保持されます。 私が抱えている問題は、g.get_vertex(vert).set_distance(34)
(ここではg
は、グラフオブジェクトで、の値ペアがその頂点オブジェクトを保持する頂点名です)でdist変数を変更しようとすると、何も変更されません。例えば 私はC++でクラスの変数を変更できません
g.get_vertex(vert).set_distance(34);
cout << g.get_vertex(vert).get_distance()
を行う場合(10000000はデフォルトコンストラクタでdistの値として定義した)10000000の代わりに、34を与えます。
#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
class Vertex{
public:
int dist ;
unordered_map <int,int> connected_to ;
Vertex(){
connected_to;
dist=10000000;
}
void add_neighbour(int x, int y){
connected_to[x] = y;
}
void set_distance(int d){
dist = d;
}
int get_neighbour(int x){
return connected_to[x];
}
int get_distance(){
return dist;
}
unordered_map <int,int> get_connections(){
return connected_to;
}
};
class Graph{
unordered_map <int , Vertex > vertices; int vert_num;
public:
Graph(){
vertices;
vert_num=0;
}
void add_vertex(int x){
Vertex New_vert;
vertices[x] = New_vert;
vert_num+=1;
}
void add_edge(int x, int y , int dist){
if (vertices.find(x) == vertices.end()){
add_vertex(x);
}
if (vertices.find(y) == vertices.end()){
add_vertex(y);
}
Vertex vert ;
vert.add_neighbour(y, dist);
Vertex vert2 ;
vert2.add_neighbour(x, dist);
}
Vertex get_vertex(int x){
return vertices[x];
}
unordered_map<int , Vertex> get_vertices(){
return vertices;
}
int get_num(){
return vert_num;
}
};
あなたのコンストラクタ本体は間違っているわけではありませんが、無駄な表現は、クラスメンバーを初期化する構文が非常に間違っていることを示唆しています。 –