C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – C风格阵列的替代品有多可行?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
现在我们有std :: array,std :: vector和大括号初始化,还需要C风格的数组吗?

解决方法

C样式数组仍然保留在std :: array上的一件事是大小减去.您可以使用C风格的数组 but not really with std::array执行以下操作: @H_607_9@ @H_607_9@
int arr[] = {1,2,3,4,5}; // no explicit size
@H_607_9@现在,我们还有另一个C样式数组替换候选者:std :: initializer_list.在内部,它由某种类似阵列的存储支持,但观察:

@H_607_9@
#include <initializer_list> // needed

// ...
auto list = {1,5}; // no explicit size,and no explicit type!
@H_607_9@并且decltype(list)== std :: initializer_list< int>.但是,目前,您无法在编译时查询此类std :: initializer_list的大小或元素,因为成员函数标记为constexpr(尚未在C 14中修复).另外,一个更大的问题:std :: initializer_list只提供对元素的const访问,因此你不能改变它们.
但请注意:std :: initializer_lists具有引用语义,如果它们是从函数返回的,那么您将拥有对某些存储的悬空引用.

@H_607_9@最后,我要说在某些狭窄的情况和利基中仍然存在C风格数组的位置,但在一般情况下,我们现在有更好的选项可用于std :: array和std :: initializer_list.

大佬总结

以上是大佬教程为你收集整理的c – C风格阵列的替代品有多可行?全部内容,希望文章能够帮你解决c – C风格阵列的替代品有多可行?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。