initializer_list是C++11提供的新类型,定义在initializer_list头文件中。 用于表示某种特定类型的值的数组,和vector一样,initializer_list也是一种模板类型。
C++11开始可以这样
std::vector v = { 1, 2, 3, 4 };
因为STL都内置了把初始化列表initializer_list当做参数的构造函数。
template <class T>
class M{
public:
M(const std::initializer_list<T> &v) {//std::initializer_list<T> v也可以,看需求
for (auto i : v) {
vec.push_back(i);
}
}
private:
std::vector<T> vec;
};
int main(){
M<int> m{ 1, 2, 3, 4 };//注意:必须用花括号才是调用. 初始化可添加=,也可不添加。
M<int> m1(1,2,3,4);//这个调用的是MyNumber(int a, int b, int c, int d)
return 0;
}