c++ - "except that a default constructed array is not empty"是什么意思?

标签 c++ c++11 stdarray

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

An array satisfies all of the requirements of a container and of a reversible container (23.2), except that a default constructed array object is not empty and that swap does not have constant complexity.

在 §23.2.1,表 96 容器要求中,它显示了一个默认构造的对象 X u;,其中后置条件是 u.empty()。据推测,以下内容:

std::array<int, 0> a;

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

最佳答案

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

关于c++ - "except that a default constructed array is not empty"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28229382/

相关文章:

c# - 使用 COM 将结构或字符串数​​组从 C++ 传递到 C#

java - 我可以使用来自 Javascript 的 V8 引擎来执行带有 Flash 用户界面的 C 或 C++ 或 JNI 函数吗?

c++ - 声明一个带有构造函数参数的成员变量

c++ - 由于移动构造函数而删除的对象

c++ - Java 和 C++11 中的枚举方法?

c++ - 尝试传递一个 constexpr lambda 并使用它来显式指定返回类型

c++ - 是否有任何 pthread 函数在最后一个线程终止时调用某些东西?

c++ - std::vector<uint8_t> 在启用 C++11/14 时手动复制而不是调用 memcpy

c++ - array::data 和 array::front 的用法

c++ - std::array 与数组性能