pdf文档 The Shapes of Multidimensional Arrays

1.38 MB 62 页 0 评论
语言 格式 评分
英语
.pdf
3
摘要
文档讨论了C++中多维数组的设计与标准化,特别是std::mdspan提案。其设计目标包括通用性、性能和表达性,旨在支持多维数组的便捷声明和操作。文档探讨了mdspan的声明方式、标准化过程中遇到的挑战(如零大小数组的处理和语法扩展的争议),以及命名的选择。最后,文档提到了与多维数组和线性代数库相关的其他提案,如mdarray和P1417。
AI总结
Vincent Reverdy在CppCon 2020的演讲《The Shapes of Multidimensional Arrays》主要探讨了多维数组的形状设计及其标准化,重点放在了C++中的mdspan和mdarray提案上。以下是总结的要点: 1. **设计目标**: - **泛型性**:尽可能覆盖广泛的参数空间。 - **性能**:在计算时间和内存使用上都高效。 - **表达性**:易于理解、阅读和以简洁的方式编写。 然而,这些目标无法同时达到,需在设计中进行权衡。 2. **mdspan提案**: - 旨在为多维数组提供非拥有引用。 - 语法示例:`std::mdspan>`。 - 提案P0332支持类似数组的张量声明,如`double[][][7]`,但部分语法仍未被允许。 3. **标准化进展**: - LEWG支持`std::mdspan`,而EWG反对语言更改,以避免副作用。 - 零尺寸数组的处理存在争议,特别是如何在标准中进行定义。 4. **设计与实现**: - 通过变量而非类型来定义形状,以增强灵活性。 - 使用递归的`operator()`和`operator[]`来构建多维索引,适用于形状和内容的定义。 - 代码示例展示了多维数组的声明和构造,如`ndarray myarray(extend<1> = 5);`。 5. **应用与未来**: - 多维数组在科学计算、数据科学和机器学习中具有广泛的应用前景。 - 提到了多个相关提案,包括P1417、P1166、P1385等,旨在推动C++标准库中的线性代数支持和接口设计。 总结:Vincent Reverdy的演讲深入探讨了多维数组在C++中的设计、标准化努力及其应用前景,展示了C++标准库在多维数组和线性代数支持方面的发展方向。
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余 50 页请下载阅读 -
文档评分
请文明评论,理性发言.