普段はC言語を使ってアルゴリズムを勉強しているのですが、解説にCPPが多いため、CPPも勉強し始めました。
CPPの書き方で、検索してもうまく出てこない書き方があり、質問させてください。
下記の構造体内での関数の宣言方法なのですが、どういった意味なのでしょうか。
cpp
1Edge(int t, int w) : to(t), weight(w) { }
やっていることはコンストラクタを使用して、toとweightに値を導入しているだけだと思います。
下記のように書き換えられると考えて良いでしょうか。
cpp
1Edge(int t, int w){ 2 to = t; 3 weight = w; 4}
##調べた内容
変数名(値)で変数に代入できるのかと、リファレンスを見てみましたがありませんでした。
代入演算子 - cppreference.com
https://ja.cppreference.com/w/cpp/language/operator_assignment
##全コード
cpp
1#include <iostream> 2#include <vector> 3using namespace std; 4 5struct Edge { 6 int to; // 辺の行き先 7 int weight; // 辺の重み 8 Edge(int t, int w) : to(t), weight(w) { } 9}; 10using Graph = vector<vector<Edge>>; 11 12int main() { 13 // 頂点数と辺数 14 int N, M; cin >> N >> M; 15 16 // グラフ 17 Graph G(N); 18 for (int i = 0; i < M; ++i) { 19 int from, to, weight; 20 cin >> from >> to >> weight; 21 G[from].push_back(Edge(to, weight)); 22 } 23}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/21 11:16 編集