我很难理解如何在C++中使用<initializer_list>。我们来看一个简单的例子:

我有这样的事情:

using namespace std;

class TV{
    vector<string> channels;
    public:
    TV(initializer_list<string> channels){}
}

假设这是我的主要内容:
int main(){
    TV x({"BBC", "CNN"}, y({"SKYNEWS", "FOX", "CNN"});
    return 0;
}

如何创建没有默认参数计数的字符串构造函数?

最佳答案

std::vector 的构造函数之一直接采用std::initializer_list

vector( std::initializer_list<T> init, const Allocator& alloc = Allocator() );

所以你可以在构造函数中初始化
TV(std::initializer_list<std::string> _channels)
: channels(_channels)
{}

另外,您应该避免在一行上声明多个变量,因为括号不匹配,这会更加明显。
TV x{{"BBC", "CNN"}};
TV y{{"SKYNEWS", "FOX", "CNN"}};

Working demo

关于c++ - 在C++中使用<initializer_list>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39962525/

10-13 01:48