initializer list
在c 中集合(列表)初始化已经成为一个基本功能
#include#include
这里,初始化列表可以在“{}”之前使用“=”,其效果与不带“=”的初始化相同。这样一来,自动变量和全局变量的初始化在c 中被
丰富了。程序员可以使用以下几种形式完成初始化的工作:
1.等号“=”加上赋值表达式(assignment-expression),比如int a = 34 4;
2.等号“=”加上花括号,比如int a = {34 4};
3.圆括号,int a (34 4);
4.花括号 ,int a {34 4};
后面两种形式可以用于获取堆内存new操作符中,
int* i = new int(1); double* d = new double{1.2f};
标准模板库容器对初始化列表的支持源自
参数的构造函数,同样可以使得自定义的类使用列表初始化
#include#include #include #include #include using namespace std; enum gender{boy,girl}; class people { public: people( initializer_list< pair > l )//initializer_list 的构造函数 { auto i = l.begin(); for (; i != l.end(); i){ data.push_back(*i); } } vector > data; }; int main(int argc, char *argv[]) { qcoreapplication a(argc, argv); int i = 0 ; string temp; people ship2012 = {{"garfield", boy}, {"hellokitty", girl}}; vector >::iterator iter = ship2012.data.begin(); for ( ; iter != ship2012.data.end(); iter ){ i ; temp = (*iter).first; cout << temp << endl; } return a.exec(); }