c – 使用0长数组(或std :: array)是什么?
在C 11中,它允许您创建一个0长度的C数组和std:数组,如下所示:
int arr1[0]; std::array arr2<int,0>; >所以我在想,没有空间存储的数组的用法是什么? 解决方法
您的第一个例子不是标准的C,而是gcc和clang允许的
an extension,它是
flexible arrays的版本,这个
answer to the question: Are flexible array members really necessary?解释了这个功能的许多优点.如果您使用
-pedantic标记编译,您将在gcc中收到以下警告:
以及以下警告:
对于第二种情况,零长度std :: array允许更简单的通用算法,而不需要为零长度的特殊情况,例如size_t类型的模板非类型参数.由于cppreference section for std::array注意到这是一个特例:
它也将使其与其他sequence containers也可以是empty一致. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |