通过初始化列表在构造函数中初始化类成员(向量)

时间:2016-04-12 09:40:54

标签: c++ c++11

C ++ 11标准提供了使用像这样的初始化列表初始化向量的机会。

vector <int> a {3, 5, 6, 2};

我只是想知道是否可以通过初始化列表初始化一个构造函数中类成员的向量。

我找了这样的东西,但我没有在互联网上找到它或者在Stack Overflow上找到它,所以我认为我应该要求它。我希望不仅是我,还有其他人会发现它有用。

我不希望将vector设为类的静态成员

该课程应如下所示:

class Foo
{
    public:
        vector <int> myvector;
        //Here should be a constructor 
};

可以像这样使用:

Foo aa{1, 2, 3, 6, 1}; // it should initialize a vector 

2 个答案:

答案 0 :(得分:2)

是的!您只需要接收std::initializer_list并使用它初始化矢量。

struct Foo {
    Foo(std::initializer_list<int> l)
    : _vec{l} { }

    std::vector<int> _vec;
};

Live on Coliru

答案 1 :(得分:1)

你需要为Foo定义一个构造函数,它接受一个初始化列表,并将它传递给向量。

请参阅http://en.cppreference.com/w/cpp/utility/initializer_list以获取完全符合您需要的示例