gpt4 book ai didi

c++ - 如何填充unique_ptr数组?

转载 作者:可可西里 更新时间:2023-11-01 18:42:19 25 4
gpt4 key购买 nike

是否可以使用 std:fill 来填充 unique_ptr 数组?目的是让不同的指针指向使用相同参数初始化的不同对象。

例如:

std::unique_ptr<int> ar[3];
std::fill(ar.begin(), ar.end(), make_unique_for_each_element_somehow<int>(1));

最佳答案

不,但这就是std::generate是为了。

std::generate 不是被赋予一个在整个目标范围内复制的单个值,而是被赋予一个“生成器”函数,该函数根据需要创建每个值。

所以,大概是这样的:

std::unique_ptr<int> ar[3];
std::generate(
std::begin(ar),
std::end(ar),
[]() { return std::make_unique<int>(1); }
);

我还没有尝试过,也不知道你是否需要摆弄它以避免不可复制性引起的问题。希望移动语义就足够了。

(当然,在 C++11 中,您将需要 your own make_unique function 。)

顺便说一句,你的 .begin().end() 是错误的(数组没有成员函数),所以(感谢来自songyuanyao)我已经改正了。

关于c++ - 如何填充unique_ptr数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41365505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com