Does C++11 have wrappers for dynamically-allocated arrays like Boost's scoped_array?

故事扮演 提交于 2019-11-28 16:52:33

There is a specialization of unique_ptr, like unique_ptr<T[]>.

#include <iostream>
#include <memory>

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

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

When you run it, you will get this messages.

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

If you want to use shared_ptr, you should use std::default_delete<T[]> for deleter since it doesn't have one like shared_ptr<t[]>.

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

So far as vectors are intended as array wrappers, what if you use any suitable smart pointer with the vector as inner object?

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!