在c++98/03中,只有普通数组和POD类型才能用列表初始化,比如
int array[3] = {1,2,3}; struct A { int x; int y; }a = {1,2};
在C++11中,适用性被大大增加。比如:
- vector,map等容器的列表初始化
- new动态数组的列表初始化
- 函数返回值的列表初始化
- 使用初始值列表作为赋值语句的右侧对象
int * a = new int{1,2,3}; pair<int,int> func(int a,int b) { return {a,b}; //返回值 } vector<int> vec = {1,2,3}; //列表初始化 vector<int> test; test = {1,2,3}; //赋值语句 vector<vector<int>> matrix; matrix.push_back({1,2,3,4});//追加一个vec元素