标签: dynarray

为什么在C++ 14中运行时大小的数组和std :: dynarray?

草案C++ 14包括运行时大小的数组和std::dynarray容器.从我所知道的,两者之间的唯一真正的区别在于std::dynarray有一个STL接口(例如begin,end,size,等),同时运行时大小的数组没有.那么为什么C++ 14需要它们呢?

我知道运行时大小的数组是核心语言的std::dynarray一部分,同时也是标准库的一部分,但是该提议std::dynarray清楚地表明作者希望编译器在许多情况下能够提供特殊支持,std::dynarray以便它可以高效尽可能地,即,与运行时大小的数组一样高效.因此,语言/库的区别似乎有点人为.

那么,为什么C++ 14需要两个运行时大小的数组std::dynarray呢?并且鉴于它std::dynarray具有更丰富的(STLified)接口,为什么不只是删除运行时大小的数组,假设std::dynarray可以以相同的运行时效率实现?

澄清

当我谈到"运行时大小的数组"时,我指的是N3639中描述的新的C++ 14核心语言特性,而不是传统的C数组或VLA或C++ 11中的任何内容.

c++ dynamic-arrays dynarray c++14

45
推荐指数
1
解决办法
9734
查看次数

dynarrays的状态是什么?

gcc 4.9现在支持n3696(具有自动存储持续时间的运行时大小的数组).n3662说:

在具有自动存储持续时间的N3497运行时大小的数组中,Jens Maurer建议使用运行时绑定的数组.这些数组是std :: dynarray,因为普通的固定大小数组是std :: array.

在这个邮件列表中,Jonathan Wakely说:

我们应该在手册中添加一个C++ 14状态表,但同时这里是库状态的快速摘要.

...

缺少这些:

  • N3672添加实用程序类以表示可选对象的提议
  • N3655 TransformationTraits Redux
  • N3662 C++动态数组
  • N3644空前向迭代器

特征一个很简单,但有点乏味,迭代器可能只影响调试模式,但其他两个是重要的工作.是否有人打算继续工作?

但是,n3662还说:

我们建议为数组定义一个新的工具,而不是采用C可变长度数组,其中元素的数量在构造时被绑定.我们将这些动态数组称为dynarray.

我似乎无法dynarraygcc页面上使用快速CTRL + F. 所以dynarray即将实施,并将variable length arrays留下或将消失?

c++ dynamic-arrays dynarray c++14

6
推荐指数
1
解决办法
1437
查看次数

标签 统计

c++ ×2

c++14 ×2

dynamic-arrays ×2

dynarray ×2