4

在 N3337 中,我正在阅读 §23.3.2.1/3,它指出:

Anarray满足容器和可逆容器 (23.2) 的所有要求,除了默认构造的array 对象不是空的并且交换没有恒定的复杂性。

在 §23.2.1,表 96 容器要求中,它显示了一个默认构造对象X u;,其中后置条件为u.empty()。那么大概是以下几点:

std::array<int, 0> a;

应该导致a.empty()输出1,它确实如此。那么这里的“空”是什么意思呢?

4

1 回答 1

8

您正在查看边界情况 - 零大小的数组是否为空?忽略那个具体问题,标准引用说一般std::array<T,N> arr,在默认构造上,不满足后置条件arr.empty()。事实上,anstd::array<T, N>只是empty()N==0。这个定义也是很自然的——std::array<T,N>::size()是一个constexprwith 值Nempty()应该是 的同义词size() == 0

于 2015-01-30T04:55:28.953 回答