ページ 11

[c++] mapの要素(pair?)の[a,b]表記

Posted: 2018年8月17日(金) 08:43
by fly3555
https://qiita.com/_EnumHack/items/f462042ec99a31881a81
では

コード:

auto const& [k, v] = *begin(dic);

コード:

for (auto const& [k, v] : dic)
    printf("(%d,%d)\n", k, v); 
}
のように、mapの要素を[k, v]などと表記していますが、私の環境ではエラーが出ます。
この書き方は便宜上のものなのでしょうか?

環境はWindows 10, MinGW6.3.0, #include <bits/stdc++.h>です

Re: [c++] mapの要素(pair?)の[a,b]表記

Posted: 2018年8月17日(金) 12:46
by Bull
そのページに書かれているように C++17 で追加された、 構造化束縛ですね。
g++ 6.3.0 ではどうかわかりませんが、g++ 7.3.0 ではコンパイルできました。
ただし、-std=c++17 のオプションが必要になります。

Re: [c++] mapの要素(pair?)の[a,b]表記

Posted: 2018年8月22日(水) 23:32
by fly3555
ご返信有難うございます。
これが構造化束縛というのですね。全然理解していませんでした‥‥