如何使用initializer_ist在构造函数中初始化动态数组



我正在尝试使用 C++ 中的initialize_list初始化构造函数中的动态数组。我怎样才能做到这一点?

#include <cstdlib> 
#include <initializer_list>
#include <iostream>
#include <utility>
using namespace std;
class vec {
private:
    // Variable to store the number of elements contained in this vec.
    size_t elements;
    // Pointer to store the address of the dynamically allocated memory.
    double *data;
public:
    /*
      * Constructor to create a vec variable with the contents of 'ilist'.
    */
    vec(initializer_list<double> ilist);
}
int main() {
    vec x = { 1, 2, 3 };  // should call to the constructor 
    return 0;
}

initializer_listsize方法,它为您提供了new必须分配多少元素的信息,因此它可以是:

vec(initializer_list<double> ilist)
{
    elements = ilist.size();
    data = new double[ ilist.size() ];
    std::copy(ilist.begin(),ilist.end(),data);
}

使用标准std::vector容器而不是原始指针。 std::vector 是动态数组的包装器,它有一个接受std::initializer_list作为输入的构造函数。

#include <initializer_list>
#include <iostream>
#include <vector>
using namespace std;
class vec {
private:
    vector<double> data;
public:
    vec(initializer_list<double> ilist) : data(ilist) {}
};

最新更新