问题标签 [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.
c++ - 为什么在 C++14 中同时使用运行时大小的数组和 std::dynarray?
C++14 草案包括运行时大小的数组和std::dynarray
容器。据我所知,两者之间唯一真正的区别是std::dynarray
具有 STL 接口(例如 、、begin
等),而运行时大小的数组则没有。那么为什么 C++14 两者都需要呢?end
size
我知道运行时大小的数组是核心语言的std::dynarray
一部分,同时是标准库的一部分,但提案std::dynarray
清楚地表明作者希望编译器在许多情况下提供特殊支持,std::dynarray
以便它可以同样高效尽可能,即与运行时大小的数组一样高效。因此,语言/库的区别似乎有些人为。
那么,为什么 C++14 既需要运行时大小的数组又需要std::dynarray
? 鉴于它std::dynarray
具有更丰富的(STLified)接口,为什么不直接删除运行时大小的数组,假设std::dynarray
可以以相同的运行时效率实现呢?
澄清
当我谈论“运行时大小的数组”时,我指的是N3639中描述的新的 C++14 核心语言功能,而不是传统的 C 数组或 VLA 或 C++11 中的任何内容。
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
继续存在还是会消失?
c++ - 是否有计划在下一个 C++ 标准中实现 std::dynarray ?
我读到 std::dynarray 是在 C++14 的草案中提出的,但后来被放弃了。
有没有计划将这个类包含在未来的 C++ 标准中,或者它已经被永久删除了?