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

标签 c++ c++11 initializer-list

我正在尝试使用 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);
}

关于c++ - 如何使用 initializer_ist 在构造函数中初始化动态数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56355230/

相关文章:

c++ - 这个函数有什么作用?

c++ - 如何使用 gcc/g++ 在 Linux 上编译 Windows?

c++ - 表示日期的字符串并对其进行转换

c++ - 如何定义采用相同参数类型五次的函数类型

c++ - 禁用 MSVC 警告 C4482 是否安全?

带有初始化列表的 C++ 的 max() 返回乱序的字符串

c++ - 使用标准类型的 ADL 无法找到运算符

c++ - 压缩二进制数组以克服 GPU 内存限制

模板内的 C++ 初始值设定项列表

c++ - 使用 reference_wrappers 初始化 vector