初始化列表到数组
Initializer list to array
截至目前,我有一个 class Permutation
,其中包含:
public:
int elements[N];
Permutation(std::initializer_list<size_t> data): elements(data) {};
但是当我尝试编译时,我得到了这个:
error: array initializer must be an initializer list
我用谷歌搜索了初始化程序列表,但 useful/I 无法理解任何内容。所以我对如何使用初始化列表一无所知。
如何编写这个构造函数?
更新
我也有这个版本:
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());
}
我很确定这是错误的,但如果它是可以修复的,有人能告诉我该怎么做吗?
第二种方法很接近。需要稍作调整。
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));
}
}
截至目前,我有一个 class Permutation
,其中包含:
public:
int elements[N];
Permutation(std::initializer_list<size_t> data): elements(data) {};
但是当我尝试编译时,我得到了这个:
error: array initializer must be an initializer list
我用谷歌搜索了初始化程序列表,但 useful/I 无法理解任何内容。所以我对如何使用初始化列表一无所知。
如何编写这个构造函数?
更新
我也有这个版本:
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());
}
我很确定这是错误的,但如果它是可以修复的,有人能告诉我该怎么做吗?
第二种方法很接近。需要稍作调整。
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));
}
}