C++プログラマ キャスブログ
[C++11]オブジェクト配列やstd::vectorの初期化は波カッコで行おう! 2014年11月24日20:30:39
記事の説明順が前後して申し訳ありません。 波カッコの初期化の説明をすっ飛ばして何気なく使っていました。 ※英名はuniform initializationらしいのですが、いい和名が欲しいですね。 便利な機能なのでぜひともご活用下さい。 これまでデータ型やデータ型のみで構成された構造体の初期化はこんな書き方で出来ていました。
1 int arr[] = { 1, 2, 3 };
std::vectorには上記の書き方で初期化が出来ませんでしたがC++11から出来るようになりました。 とても便利ですね。
1 2 #include <vector> // std::vectorに必要なヘッダー std::vector<int> arr = { 1, 2, 3 };
また{}がコンストラクタ呼び出しとして利用できるので オブジェクト配列に対してコンストラクタ引数の指定が簡単になりました。 文句なしの機能ですね!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #include <cstdio> // printfに必要なヘッダー #include <vector> // std::vectorに必要なヘッダー class Test { public: Test( int a, int b, const char* str) { printf( "%d, %d, %s\n", a, b, str ); } }; int main() { // 簡易化されたオブジェクト配列の初期化 Test arr[] = { {10, 1, "hoge"}, {11, 2, "piyo"}, }; // std::vectorでもOK // std::vector<Test> vec = // { // {10, 1, "hoge"}, // {11, 2, "piyo"}, // }; return 0; }
出力 10, 1, hoge 11, 2, piyo
カテゴリ

リンク
C++11のコードを
試すのに便利です。
http://ideone.com/

同人ゲームを
製作している知人
sorcery

にほんブログ村 IT技術ブログ C/C++へ
にほんブログ村


C++ ブログランキングへ

ゲームダウンロード DefenceTri