如何将大括号初始值设定项用于动态大小数组和新数组?
How to use curly bracket initializer for a dynamically size array and new?
我有一个float*
的"数组"(不确定这是否是正确的术语(,我正在传递给另一个函数。通常,我会做float *array = new float[6];
但是现在我正在输入一些临时代码,所以我想立即设置所有值。有没有办法我可以做这样的事情:
float *array = new float[] { 1, 2, 3, 4, 5, 6 };
让它推断出大小,所以我不必这样做:
float *array = new float[6];
array[0] = 1;
array[1] = 2;
...
此语法仅在 20 C++有效。否则,您必须指定数组的大小:
// error C++17, ok C++20
float *array = new float[] { 1, 2, 3, 4, 5, 6 };
// ok, any C++ version
float *array = new float[6] { 1, 2, 3, 4, 5, 6 };
当然,首选方法是对动态大小的列表使用std::vector
:
auto my_vec = std::vector<float>{1, 2, 3, 4, 5, 6};
如果大小是静态的,则始终首选std::array
:
// C++17 syntax
auto my_array = std::array{1.f, 2.f, 3.f, 4.f, 5.f, 6.f};
// C++14 syntax
auto my_array = std::array<float, 6>{1, 2, 3, 4, 5, 6};
// can't push back into 'my_array'
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 声明后,gcc 的动态大小数组是否与标准数组有效相同?
- 将 int 数组转换为带有小数C++的双精度数组
- 如何将大括号初始值设定项用于动态大小数组和新数组?
- 对未知大小数组的引用的列表初始化:它是否应该推断数组大小?
- 返回指向固定大小数组C++的数组的指针
- 如何将小数数组转换为二进制数数组
- 对指向固定大小数组的指针数组的内存分配的解释
- 在 C++ 中创建固定大小的 int 数组的动态大小数组