问题标签 [dynarray]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
10045 浏览

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

C++14 草案包括运行时大小的数组和std::dynarray容器。据我所知,两者之间唯一真正的区别是std::dynarray具有 STL 接口(例如 、、begin等),而运行时大小的数组则没有。那么为什么 C++14 两者都需要呢?endsize

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

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

澄清

当我谈论“运行时大小的数组”时,我指的是N3639中描述的新的 C++14 核心语言功能,而不是传统的 C 数组或 VLA 或 C++11 中的任何内容。

0 投票
1 回答
2466 浏览

c++ - 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。

我似乎无法在页面dynarray上使用快速 CTRL+F 。gcc那么dynarray很快就会实施,会variable length arrays继续存在还是会消失?

0 投票
0 回答
227 浏览

c++ - 是否有计划在下一个 C++ 标准中实现 std::dynarray ?

我读到 std::dynarray 是在 C++14 的草案中提出的,但后来被放弃了。

有没有计划将这个类包含在未来的 C++ 标准中,或者它已经被永久删除了?