在 C++ 中使用 <initializer_list>
Using <initializer_list> in C++
我很难理解如何在 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"}};
您的代码运行良好。
您声明时 TV x({"BBC", "CNN"}), y({"SKYNEWS", "FOX", "CNN"});
中的大括号未对齐。调整并粘贴下面的代码。有效。
#include <iostream>
#include <vector>
using namespace std;
class TV{
vector<string> channels;
public:
TV(initializer_list<string> channels1){
channels = channels1;
}
void printSize()
{
cout<<channels.size()<<endl;
}
};
int main(){
TV x({"BBC", "CNN"}), y({"SKYNEWS", "FOX", "CNN"});
x.printSize();
y.printSize();
return 0;
}
The output is
2
3
我很难理解如何在 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"}};
您的代码运行良好。
您声明时 TV x({"BBC", "CNN"}), y({"SKYNEWS", "FOX", "CNN"});
中的大括号未对齐。调整并粘贴下面的代码。有效。
#include <iostream>
#include <vector>
using namespace std;
class TV{
vector<string> channels;
public:
TV(initializer_list<string> channels1){
channels = channels1;
}
void printSize()
{
cout<<channels.size()<<endl;
}
};
int main(){
TV x({"BBC", "CNN"}), y({"SKYNEWS", "FOX", "CNN"});
x.printSize();
y.printSize();
return 0;
}
The output is
2
3