1. ホーム
  2. c++

[解決済み] C++でペアの配列を初期化する

2022-02-02 23:30:21

質問

次のような方法で、pairの配列を初期化したい。

pair<int, int> adjs[4] = {{current_node.first-1, current_node.second}, {current_node.first+1, current_node.second}, {current_node.first, current_node.second-1}, {current_node.first, current_node.second+1}};

しかし、私のコンパイラー(Code::Blocks 12.1)はエラーを出し続けます。

brace-enclosed initializer used to initialize `std::pair<int, int>'|

以前、オンラインコンパイラで一度この方法を使ったことがありますが、うまくいきました。コンパイラの問題なのか、それとも私のコードの構文に問題があるのでしょうか? 私は4つのペアを1つずつ初期化したくありません。このエラーを取り除くことができる方法を提案してください。

解決方法を教えてください。

このユニバーサル初期化構文はC++11の機能です。おそらく、あなたが使用しているコンパイラはC++11をサポートしていませんが、オンラインではサポートしていました。

代わりに、このように配列を初期化することができます。

pair<int, int> adjs[4] = {make_pair(current_node.first-1, current_node.second), ...};

ライブの例です。 http://ideone.com/ggpGX9