gpt4 book ai didi

c++ - unique_ptr 到 nullptr 是不可复制的

转载 作者:行者123 更新时间:2023-11-27 22:37:05 29 4
gpt4 key购买 nike

它看起来像创建 unique_ptr 的嵌套 vector 到 null 抛出试图引用已删除的函数。我相信这是因为它试图复制 vector unique_ptr(nullptr) 而 unique_ptr(nullptr) 是不可复制的。

#include <memory>
#include <vector>
struct Foo {
};
int main() {
std::vector<std::vector<std::unique_ptr<Foo>>> foo(5, std::vector<std::unique_ptr<Foo>>(5));
}

https://onlinegdb.com/SkvGkVYoQ

我不确定如何进行。我只需要一个 nullptr 的多维数组,如果它们是唯一的,它会膨胀 - 除了解决这个问题之外不需要 shared_ptr。

最佳答案

std::unique_ptr 根本不可复制。这与 nullptr 无关。最简单的解决方法是只使用一维数组并映射维度。

然后你可以这样做:

for (std::size_t j = 0; i < 5; ++j) {
for (std::size_t i = 0; i < 5; ++i) {
std::size_t index = j*5+i;
foo.emplace_back(std::make_unique<Foo>());
}
}

(您可以对嵌套的 std::vector 应用类似的模式,但这种方式在缓存位置等方面可能更好)

关于c++ - unique_ptr 到 nullptr 是不可复制的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52910696/

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