You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请问是否存在适用于mdarray的submdspan等效函数?

关于mdarray的submdspan等效函数问题解答

当前mdspan仓库中并未为mdarray提供原生的submdspan重载,不过这个功能属于项目规划中的后续补充内容,只是目前尚未实现。

为什么暂时没实现?

核心原因是项目优先级的安排:mdspan是最先推进纳入C++标准的核心组件,项目初期的主要精力都放在了mdspan的标准兼容性、核心功能完善以及测试覆盖上。mdarray作为配套的自带存储多维容器参考实现,属于衍生组件,部分辅助功能的跟进节奏会稍慢。另外,像你自己实现的这种通过mdspan中转的方案已经能覆盖绝大多数使用场景,官方认为这是一个可接受的临时替代方案,所以没有将其列为优先实现的功能。

你的临时实现方案的有效性

你自定义的submdspan重载是完全合理且能覆盖绝大多数mdarray使用场景的。这个实现利用mdarray的data()和mapping()接口生成对应视图,再复用mdspan的submdspan逻辑,完全符合mdarray与mdspan的设计契约——不管是常规布局(如layout_right/layout_left)还是自定义布局,只要mdarray的映射规则合法,这个重载就能正常工作。

如果需要支持const场景,可以补充一个const版本的重载:

template <class ElementType, class Extents, class LayoutPolicy, class... SliceSpecs>
auto submdspan(
    const mdarray<ElementType, Extents, LayoutPolicy> &arr, 
    SliceSpecs... slices)
{
    return submdspan(
        mdspan<const ElementType, Extents, LayoutPolicy>(arr.data(), arr.mapping()), 
        slices...);
}

内容的提问来源于stack exchange,提问作者Simplex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 18:06:33