如何创建一个用列表初始化的构造函数? [英] How to create a constructor initialized with a list?
问题描述
如何使用具有n个元素的列表初始化构造函数?
How can I initialize a constructor using a list with n elements?
X x = {4, 5, 6, ...};
推荐答案
对于具有n个元素的列表,您需要使用std :: initializer_list.
For a list with n elements you need to use std::initializer_list.
Initializer_list对象像数组一样自动构建类型T的元素已分配,其中的每个元素列表被复制初始化为数组中的相应元素,使用任何必要的非缩小隐式转换.
Initializer_list objects are automatically constructed as if an array of elements of type T was allocated, with each of the elements in the list being copy-initialized to its corresponding element in the array, using any necessary non-narrowing implicit conversions.
遵循一个示例:
#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;
}
有关std :: initializer_list的更多信息: http://www.cplusplus.com/reference/initializer_list/initializer_list/
For more information about std::initializer_list: http://www.cplusplus.com/reference/initializer_list/initializer_list/
这篇关于如何创建一个用列表初始化的构造函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!