c – C风格阵列的替代品有多可行?
发布时间:2020-12-16 10:24:33 所属栏目:百科 来源:网络整理
导读:现在我们有std :: array,std :: vector和大括号初始化,还需要C风格的数组吗? 解决方法 C样式数组仍然保留在std :: array上的一件事是大小减去.您可以使用C风格的数组 but not really with std::array 执行以下操作: int arr[] = {1,2,3,4,5}; // no explic
现在我们有std :: array,std :: vector和大括号初始化,还需要C风格的数组吗?
解决方法
C样式数组仍然保留在std :: array上的一件事是大小减去.您可以使用C风格的数组
but not really with
std::array 执行以下操作:
int arr[] = {1,2,3,4,5}; // no explicit size 现在,我们还有另一个C样式数组替换候选者:std :: initializer_list.在内部,它由某种类似阵列的存储支持,但观察: #include <initializer_list> // needed // ... auto list = {1,5}; // no explicit size,and no explicit type! 并且decltype(list)== std :: initializer_list< int>.但是,目前,您无法在编译时查询此类std :: initializer_list的大小或元素,因为成员函数未标记为constexpr(尚未在C 14中修复).另外,一个更大的问题:std :: initializer_list只提供对元素的const访问,因此你不能改变它们. 最后,我要说在某些狭窄的情况和利基中仍然存在C风格数组的位置,但在一般情况下,我们现在有更好的选项可用于std :: array和std :: initializer_list. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |