gpt4 book ai didi

c++ - 什么时候应该使用智能指针来保存数组?

转载 作者:可可西里 更新时间:2023-11-01 17:57:41 25 4
gpt4 key购买 nike

我看到许多建议使用智能指针在内存中保存动态分配的数组的答案。我的观点一直是,如果已知大小,则应将其包裹在 std::array 中。 ,同样,如果大小未知(即通过将智能指针的指针类型设为未知边界数组,并在稍后使用 reset() 处理它),则应使用 std::vector .事实上,这就是我一直在做的事情。

比如最近看到一个答案用了std::unique_ptr<int[5]> p(new int[5]) .这似乎类似于构造一个 std::array<int, 5>因为尺寸已知。此外,额外的好处是 std::array静态分配其数组并包含类似数组的功能,如大小、迭代器等。

那么使用智能指针来保存数组而不是使用专门为此目的制作的其他标准容器的原因是什么?

最佳答案

首先,unique_ptr<T[]>不需要静态大小 - 它可以只是 unique_ptr<int[]> .

Moreover, the added benefits are that std::array statically-allocates its array

这不能严格保证是好处。考虑一下,如果我有一个 10 兆字节的数组,那将耗尽我的堆栈。

一般来说,当人们希望数组大小在创建时固定但能够改变成员时,他们会选择这种方法。请注意,对于 std::vector ,您只能将两个元素设为vector const ,或者两者都不是。您不能只制作 vector 而不制作元素 const .

关于c++ - 什么时候应该使用智能指针来保存数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25701357/

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