动态大小的不可调整大小的数组

Dynamically sized non resizable array

有没有像 "dynamically sized non resizable array" 这样的 C++ 类型?这种类型可以认为是以下两种情况之一:

我不想要一个仅在数组中的元素类型为不可复制类型时才有效的解决方案。我想要一个通用的解决方案。

是的,(几乎)有。 std::unique_ptr<T[]>。主模板针对这种情况进行了部分特化,它提供了适当的接口(运算符 []、无运算符 * 等)

或者,您可以将 std::vector 包装在您自己的 class 中并限制其接口。您甚至可以通过使用非 public 继承从 std::vector 派生 class 并仅发布其接口的相关部分来做到这一点:

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[];
};