Nay*_*iya 11 c++ arrays stdarray
在C++ 11中,它允许您创建一个0
长度为C的数组,std:array
如下所示:
int arr1[0];
std::array arr2<int,0>;
Run Code Online (Sandbox Code Playgroud)
Sha*_*our 17
你的第一个例子不是标准的C++,而是兼容和允许的扩展,它是灵活数组的版本,这个问题的答案是:灵活的数组成员真的有必要吗?解释了此功能的许多优点.如果您使用-pedantic标志编译,您将收到以下警告:gcc
clang
gcc
警告:ISO C++禁止零大小数组'arr1'[-Wpedantic]
以及以下警告clang
:
警告:零大小数组是扩展名[-Wzero-length-array]
至于你的第二种情况,零长度std::array
允许更简单的通用算法,而不必使用零长度的特殊情况,例如size_t类型的模板非类型参数.作为std :: array注释的cppreference部分,这是一个特殊情况:
零长度数组(N == 0)有一种特殊情况.在这种情况下,array.begin()== array.end(),这是一些唯一的值.调用front()或back()对零大小数组的影响是未定义的.
归档时间: |
|
查看次数: |
1301 次 |
最近记录: |