c++ - 为什么数组没有统一的初始化程序?
问题描述
假设我想用数组动态分配堆:
auto my_arr = new int[3] {3, 4, 5};
for (int i = 0; i < 3; i++)
std::cout << my_arr[i] << ' ';
delete[] my_arr;
输出:
3 4 5
当我不new
喜欢使用时:
auto my_arr = int[3]{3, 4, 5};
它抛出一个错误。
备择方案:
auto my_arr = std::array{3, 4, 5}; // deduces into `std::array<int, 3>`
auto my_arr2 = {3, 4, 5}; // deduces into `std::initializer_list<int>`
new
当允许表达式时,内置数组没有初始化(类构造函数)的原因是什么?
解决方案
推荐阅读
- python - ValueError:int() 的无效文字,我的字符串以 10 为底
- angular - 如何以角度更新公共 api 中的自定义对象?
- spring-restdocs - 在 spring rest docs 中记录自定义注释
- android - 如何在视图模型android中验证动态创建的数据
- elasticsearch - ElasticSearch 获取 NULL 值作为空字符串或“N/A”
- css - 禁用特定页面上的滚动
- c# - 处理通知 C#
- powershell - - 在 powershell 中替换更改数据但不保存它
- sql - 如何避免插入重复记录
- c# - 十进制类型舍入问题