首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >像Boost的scoped_array一样,C++11有动态分配数组的包装器吗?

像Boost的scoped_array一样,C++11有动态分配数组的包装器吗?
EN

Stack Overflow用户
提问于 2011-12-24 19:08:03
回答 2查看 12.2K关注 0票数 28

我经常需要在C++中处理动态分配的数组,因此需要为scoped_array、shared_array等使用Boost。在阅读了Stroustrup's C++11 FAQC++11 Reference Wiki之后,我找不到合适的替代品来替代C++11标准提供的这些动态数组包装器。有没有什么我忽略了的地方,或者我必须继续依赖Boost?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-24 21:39:31

unique_ptr<T[]>一样,unique_ptr也有自己的特性。

代码语言:javascript
运行
复制
#include <iostream>
#include <memory>

struct test
{
  ~test() { std::cout << "test::dtor" << std::endl; }
};

int main()
{
  std::unique_ptr<test[]> array(new test[3]);
}

当你运行它的时候,你会得到这样的消息。

代码语言:javascript
运行
复制
test::dtor
test::dtor
test::dtor

如果你想使用shared_ptr,你应该使用std::default_delete<T[]>来删除,因为它没有像shared_ptr<t[]>这样的。

代码语言:javascript
运行
复制
std::shared_ptr<test> array(new test[3], std::default_delete<test[]>());
票数 50
EN

Stack Overflow用户

发布于 2015-02-11 02:12:00

就向量作为数组包装器而言,如果您将任何合适的智能指针与向量作为内部对象一起使用,情况会怎样?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8624146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档