C++ 如何创建用列表初始化的构造函数?
如何使用包含n个元素的列表初始化构造函数C++ 如何创建用列表初始化的构造函数?,c++,list,c++11,constructor,C++,List,C++11,Constructor,如何使用包含n个元素的列表初始化构造函数 X x = {4, 5, 6, ...}; 您是否在询问如何创建接受初始值设定项列表的构造函数 #include <initializer_list> class X { public: X(std::initializer_list<int> ilist); }; #包括 X类{ 公众: X(标准:初始值设定项列表); }; 您可以定义所谓的初始值设定项列表构造函数,并使用类std::initializer\u lis
X x = {4, 5, 6, ...};
您是否在询问如何创建接受
初始值设定项列表的构造函数
#include <initializer_list>
class X {
public:
X(std::initializer_list<int> ilist);
};
#包括
X类{
公众:
X(标准:初始值设定项列表);
};
您可以定义所谓的初始值设定项列表构造函数,并使用类std::initializer\u list
的迭代器访问列表中的元素
根据C++标准
如果初始值设定项列表构造函数的第一个参数的类型为
std::初始值设定项\u列表或引用可能符合条件的cv
某些类型E的初始值设定项列表,或者没有
其他参数或所有其他参数都有默认参数
比如说
#include <iostream>
#include <vector>
#include <initializer_list>
class A
{
public:
A() = default;
A( std::initializer_list<int> l ) : v( l ) {}
std::vector<int> v;
};
int main()
{
A a = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
for ( int x : a.v ) std::cout << x << ' ';
std::cout << std::endl;
return 0;
}
#包括
#包括
#包括
甲级
{
公众:
A()=默认值;
A(std::初始值设定项_list l):v(l){
std::向量v;
};
int main()
{
A={1,2,3,4,5,6,7,8,9};
对于(intx:a.v)std::cout对于包含n个元素的列表,您需要使用std::initializer\u list
初始值设定项列表对象自动构造为数组
已分配类型为T的元素的个数,每个元素位于
正在复制初始化到数组中相应元素的列表,
使用任何必要的非收缩隐式转换
下面是一个例子:
#include <iostream>
#include <initializer_list>
#include <vector>
template<class T>
class X {
long unsigned int size;
std::vector<T> _elem;
public:
X(std::initializer_list<T> l): size{l.size()} {
for(auto x: l)
_elem.push_back(x);
}
void print() {
for(auto x: _elem)
std::cout << x << " ";
}
};
int main(int argc, char **argv) {
X<int> x = {4, 5, 10 ,8 ,6};
x.print();
return 0;
}
#包括
#包括
#包括
模板
X类{
长无符号整数大小;
标准:向量元素;
公众:
X(std::initializer_list l):大小{l.size()}{
用于(自动x:l)
_元素推回(x);
}
作废打印(){
用于(自动x:_元素)
标准::cout