Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在 N3337 中,我正在阅读 §23.3.2.1/3,它指出:
Anarray满足容器和可逆容器 (23.2) 的所有要求,除了默认构造的array 对象不是空的并且交换没有恒定的复杂性。
array
在 §23.2.1,表 96 容器要求中,它显示了一个默认构造对象X u;,其中后置条件为u.empty()。那么大概是以下几点:
X u;
u.empty()
std::array<int, 0> a;
应该导致a.empty()输出1,它确实如此。那么这里的“空”是什么意思呢?
a.empty()
1
您正在查看边界情况 - 零大小的数组是否为空?忽略那个具体问题,标准引用说一般std::array<T,N> arr,在默认构造上,不满足后置条件arr.empty()。事实上,anstd::array<T, N>只是empty()当N==0。这个定义也是很自然的——std::array<T,N>::size()是一个constexprwith 值N,empty()应该是 的同义词size() == 0。
std::array<T,N> arr
arr.empty()
std::array<T, N>
empty()
N==0
std::array<T,N>::size()
constexpr
N
size() == 0