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访问,因此你不能改变它们.
但请注意:std :: initializer_Lists具有引用语义,如果它们是从函数返回的,那么您将拥有对某些存储的悬空引用.
最后,我要说在某些狭窄的情况和利基中仍然存在C风格数组的位置,但在一般情况下,我们现在有更好的选项可用于std :: array和std :: initializer_List.
总结以上是内存溢出为你收集整理的c – C风格阵列的替代品有多可行?全部内容,希望文章能够帮你解决c – C风格阵列的替代品有多可行?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)