Rei*_*ica 23
是的,那里(差不多)是.std::unique_ptr<T[]>.主要模板具有针对此案例的部分特化,它提供适当的接口(操作员[],无操作员*等)
或者,您可以std::vector在自己的类中包装并限制其接口.您甚至可以通过std::vector使用非公共继承派生类并仅发布其接口的相关部分来实现此目的:
template <class T, class A = std::allocator<T>>
struct FixedVector : private std::vector<T, A>
{
using FixedVector::vector::vector;
using FixedVector::vector::operator=;
using FixedVector::vector::get_allocator;
using FixedVector::vector::at;
using FixedVector::vector::front;
using FixedVector::vector::back;
using FixedVector::vector::data;
using FixedVector::vector::begin;
using FixedVector::vector::cbegin
using FixedVector::vector::end;
using FixedVector::vector::cend;
using FixedVector::vector::empty;
using FixedVector::vector::size;
using FixedVector::vector::operator[];
};
Run Code Online (Sandbox Code Playgroud)