You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用std::make_unique创建并初始化自定义值的std::unique_ptr<int[]>

用std::make_unique初始化自定义值的std::unique_ptr<int[]>

当然可以实现,但具体写法取决于你使用的C++标准版本:

C++14及更早版本

在C++14中,std::make_unique的数组重载仅支持指定数组大小来创建值初始化的数组(对于int类型来说就是初始化为0),并不支持直接传入自定义初始化列表。所以这时候你没法直接用std::make_unique完成你的需求,只能退回到你原本的写法:

std::unique_ptr<int[]> ptr{ new int[5]{1,2,3,4,5} };

或者如果坚持想用std::make_unique,可以先创建数组再手动赋值:

auto ptr = std::make_unique<int[]>(5);
ptr[0] = 1;
ptr[1] = 2;
ptr[2] = 3;
ptr[3] = 4;
ptr[4] = 5;

C++20及之后版本

C++20扩展了std::make_unique的数组重载,支持通过初始化列表来直接初始化数组元素。这时候你就可以用更安全的std::make_unique来完成需求,写法非常简洁:

auto ptr = std::make_unique<int[]>({1,2,3,4,5});

这个写法会自动推导数组的大小(这里是5),并且把数组元素初始化为你指定的自定义值,同时避免了直接使用new的风险,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Killzone Kid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:01:24