动态数组的现状是什么?

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

N3497中提出了具有运行时绑定的数组,Jens Maurer提议具有运行时大小的数组。这些数组对于std :: dynarray与普通固定大小数组对于std :: array。

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

我们应该在手册中添加一个C ++ 14状态表,但在此期间,这是库状态的简要摘要。

...

以下是缺少的内容:

  • N3672 添加表示可选对象的实用程序类的建议
  • N3655 TransformationTraits Redux
  • N3662 C++动态数组
  • N3644 Null Forward迭代器

特征一个简单但有点乏味,迭代器只影响调试模式,但另外两个是实质性的工作。有计划工作或吗?

然而,n3662还说:

我们提出了一种定义新设施以绑定元素数量的数组的方法,而不是采用C变长数组

在编程中,我们称这些可变长数组为动态数组dynarray。

我在gcc页面上快速查找未找到 dynarray。因此,dynarray会很快实现吗?变长数组将会保留还是消失?


1
N3497 对我来说没问题(关于“死链接”)。哦,哈哈,那是 n3662 的一个笔误。他们链接了 n3467。 - dyp
1个回答

17

std::dynarray最初打算在C++14发布时引入。然而,后来决定将std::dynarray移动到一个“Array TS”中,该TS还可能包括一些std::array_view类。主要原因是委员会对某些情况下堆分配与栈分配存在争议(如果您尝试使用new分配std::dynarray)。因此,决定将其推迟。目前仍有一些正在讨论的问题

这个类不会准备好用于C++14。它可能会随着Arrays TS或C++17一起发布。

更新: std::dynarray没有出现在C++14中,也不会出现在C++17中,Arrays TS已经被停止了,因此在标准中很长一段时间内可能不会有类似于std::dynarray的东西。如果我正确理解了标准的当前位置,委员会更愿意提出运行时大小类的通用解决方案,但迄今为止所有建议都被拒绝了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接