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

后端 未结 2 483
耶瑟儿~
耶瑟儿~ 2020-12-13 01:05

I often need to deal with dynamically-allocated arrays in C++, and hence rely on Boost for scoped_array, shared_array, and the like. After reading through Stroustrup\'s C++1

相关标签:
2条回答
  • 2020-12-13 01:16

    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[]>());
    
    0 讨论(0)
  • 2020-12-13 01:27

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

    0 讨论(0)
提交回复
热议问题