提问人:Simplex 提问时间:7/23/2022 最后编辑:einpoklumSimplex 更新时间:3/19/2023 访问量:330
mdarray 有 submdspan 的等价物吗?
Is there an equivalent of submdspan for mdarray?
问:
令人兴奋的 mdspan
的 repo 是建议用于 C++ 标准库的多维类似物,现在还包含密切相关的 的参考实现,它与拥有其数据不同。std::span
mdarray
mdspan
但是,尽管该函数可以生成 的子集,但我找不到 的类似物。我所期望的是一个行为与 完全相同并返回 的函数,但它对 .submdspan
mdspan
mdarray
submdspan
mdspan
mdarray
这是计划但尚未实施的吗?如果不是,为什么不呢?
编辑:
我用一个自制解决方案暂时解决了它,该解决方案以重载的形式出现,然后创建一个映射到整个 的临时解决方案,并调用它。submdspan
mdarray
mdspan
mdarray
submdspan
它现在完成了这项工作!但我不相信这涵盖了所有可以想象的,因为目前几乎没有文档。仍然希望得到原始问题的答案。mdarray
template <class ElementType, class Extents, class LayoutPolicy, class... SliceSpecs>
auto submdspan(
mdarray<ElementType, Extents, LayoutPolicy> &arr,
SliceSpecs... slices)
{
return submdspan(
mdspan<ElementType, Extents, LayoutPolicy>(arr.data(), arr.mapping()),
slices...);
}
答:
6赞
Christian Trott
10/11/2022
#1
只是随机遇到了这个:因为我是所有相关事物(、、和参考实现)的主要作者/维护者,是的,我们可以添加它。我这样做的方式实际上是调用 的“to_mdspan”函数,并在此基础上调用 submdspan:mdspan
mdarray
submdspan
mdarray
auto sub = submdspan(mda.to_mdspan(), slice_specifiers...);
为了使这两个提案独立,我现在将把它分开(除非 LEWG 另有说明),并写一篇后续论文,它只是添加一个重载,将上述操作转发到重载中,将 .submdspan
mdspan
但一般来说:你可以在 repo 上打开一个问题来询问提案问题。
评论