我很难理解如何在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/