C++11 是否有用于动态分配数组(如 Boost scoped_array)的包装器?



我经常需要在c++中处理动态分配的数组,因此依赖Boost来处理scoped_array、shared_array等。在通读了Stroustrup的c++ 11 FAQ和c++ 11参考Wiki之后,我找不到一个合适的替代这些由c++ 11标准提供的动态数组包装器。是我忽略了什么,还是我必须继续依赖Boost?

unique_ptr<T[]>一样,unique_ptr也存在专业化。

#include <iostream>
#include <memory>
struct test
{
  ~test() { std::cout << "test::dtor" << std::endl; }
};
int main()
{
  std::unique_ptr<test[]> array(new test[3]);
}

当你运行它时,你会得到这些消息。

test::dtor
test::dtor
test::dtor

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

std::shared_ptr<test> array(new test[3], std::default_delete<test[]>());

到目前为止,向量被用作数组包装器,如果您使用任何合适的智能指针将向量作为内部对象会怎么样?

相关内容

  • 没有找到相关文章

最新更新