initializer_list (C++11)

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;
}

猜你喜欢

转载自blog.csdn.net/tony__lin/article/details/83830101