[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<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>
#include <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"},
};
return 0;
} |
出力
10, 1, hoge
11, 2, piyo |
|