gpt4 book ai didi

c++ - 0 长度数组(或 std::array)有什么用?

转载 作者:可可西里 更新时间:2023-11-01 15:05:29 30 4
gpt4 key购买 nike

在 C++11 中,它允许您创建一个 0 长度的 C 数组和 std:array,如下所示:

int arr1[0];
std::array arr2<int,0>;
  1. 所以我在想没有空间存储的数组有什么用?
  2. 其次什么是零长度数组?如果是指针,它指向哪里?

最佳答案

您的第一个示例不是标准 C++,而是 an extension gccclang 都允许,它是 flexible arrays 的版本还有这个answer to the question: Are flexible array members really necessary?解释了此功能的许多优点。如果您使用 -pedantic 编译标记您将在 gcc 中收到以下警告:

warning: ISO C++ forbids zero-size array 'arr1' [-Wpedantic]

以及 clang 中的以下警告:

warning: zero size arrays are an extension [-Wzero-length-array]

至于你的第二种情况,零长度 std::array 允许更简单的通用算法,而不必为 零长度 设置特殊情况,例如模板非- size_t 类型的类型参数。作为cppreference section for std::array注意这是一个特例:

There is a special case for a zero-length array (N == 0). In that case, array.begin() == array.end(), which is some unique value. The effect of calling front() or back() on a zero-sized array is undefined.

它也会使它与其他 sequence containers 保持一致也可以是 empty .

关于c++ - 0 长度数组(或 std::array)有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26209190/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com