std :: array成员函数empty(),max_size() - 没用但是为了一致性?

Arb*_*est 4 c++ c++11 stdarray

这些成员函数是否像它们看似无用而存在只是为了提供与其他容器的一致性?

例如:

std::array<int, 4> array1;  // size of 4 (but no elements initialized)
std::array<int, 0> array2;  // size of zero.

array1.empty();  // false - not empty even though no elements are initialized
array2.empty();  // true - empty and no way to add elements

array1.size();      // room for four now
array1.max_size();  // room for four forever

array2.size();      // no room for anything now
array2.max_size();  // ... or ever
Run Code Online (Sandbox Code Playgroud)

这个问题的答案是处理零"大小"参数和来自sizeof()的非零返回,即,即使在空的情况下也会占用空间.但那不是我要问的.

Ded*_*tor 8

是的,它们只是为了保持一致性,允许更容易的模板专业化.
关于std::array<int, 4>从没有元素开始你的评论仍然是错误的:它是一个打扮int[4],现在和永远.
除此之外,根据标准,大多数派生的C++对象都不会小于1.