用数组初始化一个类?

时间:2017-01-22 17:30:49

标签: c++ class initialization

使用STL的矢量类,我可以使用项目列表(或数组)初始化矢量:

std::vector<int> = { 1, 2, 3 };

我可以将此功能实现到我自己的类中吗?我正在编写自己的Vector类来实践数据结构,并希望这样做:

MyVectorClass<int> = { 1, 2, 3 };

2 个答案:

答案 0 :(得分:5)

是。使用std::initializer_list

在类中定义一个带有std::initializer_list<T>的构造函数:

MyVectorClass(std::initializer_list<T> initializer)
{
    for(T& i : initializer)
    {
        // Do whatever you want with items
    }
}

答案 1 :(得分:3)

当然。它是C ++的设计目标之一,标准库可以用语言实现(除了一些值得注意的例外)。

您要找的是std::initializer_list。这是不是一个数组!请参阅std::vector constructor documentation