gpt4 book ai didi

c++ - 将 std::vector> 移动到 std::vector>

转载 作者:太空狗 更新时间:2023-10-29 19:40:12 28 4
gpt4 key购买 nike

有时候,我们有一个工厂可以生成一个 std::unique_ptr vector ,后来我们想在类/线程/你命名的之间共享这些指针。因此,最好改用 std::shared_ptr 。当然有一种方法可以将 std::uniqe_ptr 转换为 std::shared_ptr

std::shared_ptr<int> sharedV;
std::unique_ptr<int> uniqueV(new int(2));

sharedV = std::move(uniqueV);

那么有什么直接的方法可以对标准集合做这样的事情吗?

最佳答案

您可以使用 std::move 来自 <algorithm>移动范围。它的行为很像 std::copy ,而是移动。以下示例将移动所有 unique_ptr来自 uniqueV进入sharedV . uniqueV的元素都是 nullptr在示例的末尾。

#include <algorithm>
#include <iterator>
#include <memory>
#include <vector>

int main()
{

std::vector<std::shared_ptr<int>> sharedV;
std::vector<std::unique_ptr<int>> uniqueV;

uniqueV.emplace_back(std::make_unique<int>(42));

std::move(uniqueV.begin(), uniqueV.end(), std::back_inserter(sharedV));

return 0;
}

关于c++ - 将 std::vector<std::unique_ptr<T>> 移动到 std::vector<std::shared_ptr<T>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45864269/

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