初始化列表到数组

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));
   }
}