截至目前,我有一个班级Permutation
,其中包含:
public:
int elements[N];
Permutation(std::initializer_list<size_t> data): elements(data) {};
但是当我尝试编译时,我得到了这个:
错误:数组初始值设定项必须是初始化列表
我已经搜索了初始化列表中的地狱,尽管没有什么是有用的/我能理解的。所以我对如何使用初始化列表没有最小的想法。
如何编写此构造函数?
更新
我也有这个版本:
public:
int elements[N];
Permutation(std::initializer_list<size_t> data): elements(new int[N]) {
std::copy(data.begin(), data.end(), elements.begin(), elements.end());
}
我很确定它更加错误,但如果它可以解决,有人可以告诉我该怎么做吗?
答案 0 :(得分:2)
第二种方法很接近。它需要微小的调整。
Permutation(std::initializer_list<int> data) : elements{}
{
size_t size = data.size();
if ( size <= N )
{
std::copy(data.begin(), data.end(), std::begin(elements));
}
else
{
std::copy(data.begin(), data.begin()+N, std::begin(elements));
}
}