std::array 函数有什么意义?

what is the point of std::array function?

在 C++ array 实现中,提供了一个 empty 方法。然而,正如实施建议的那样:

constexpr bool
empty() const noexcept { return size() == 0; }

只有 returns 如果 array 的大小为 0,那么这有什么意义呢?

std::array 的典型用例是这样的:std::array<type,size> a = {init here maybe};a[index] = value; 之后。

是否有任何用例可以声明零长度数组或从空检查有用的地方获取它?

is there any use case where you would declare a zero length array or get it from somewhere that an empty check would be useful?

如果您使用数组大小​​的模板。例如

#include <array>

template <std::size_t s>
void function(std::array<int, s> const& array) {
    if (!array.empty()) {
        // other array operations ...
    }
}

int main() {
    auto empty_array = std::array<int, 0>{};
    function(empty_array);
    auto array = std::array<int, 9>{};
    function(array);
}

在这种情况下,in function 接受不同大小的数组,因此我们不能 100% 确定它不为空。

编辑:

此外,sizeempty 成员在我们没有其他方法获取大小时(在我的第一个示例中)在通用代码(例如,适用于任何容器的函数)中很有用从技术上讲,您可以从 s 获得尺寸)。例如

template <class Container>
void function(Container const& array) {
    if (!array.empty()) {
        // other container operations ...
    }
}