如何使用initializer_ist在构造函数中初始化动态数组
How to initialize dynamic array in constructor using 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_list
有size
方法,它为您提供了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) {}
};
相关文章:
- 内联映射初始化的动态atexit析构函数崩溃
- 动态初始化 C 与 C++ 中的静态值
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- 静态和动态模板初始化可以交错吗?
- 虚拟成员函数的定义是否强制在同一转换单元中动态初始化静态数据成员?
- C++ - 使用类中的初始值设定项列表初始化动态集
- 异常 尝试初始化动态数组时未处理
- 如何使用initializer_ist在构造函数中初始化动态数组
- 如何在类中初始化动态数组
- 如何使用一些参数初始化动态分配的数组中的对象
- 初始化动态分配的数组时出错
- 使用对象的复制构造函数初始化动态数组对象
- 初始化动态数组
- 通过已存在的对象初始化动态分配的对象
- c++初始化动态内存中c样式字符串的默认值
- 如何在c++中以非标准方式初始化动态内存
- 初始化动态字符串数组(c++)
- 如何使用memset初始化动态二维数组
- 初始化动态向量列表
- 特征:逗号初始化动态矩阵