【问题标题】:Phobos-Range Compatible Fixed-Dimensional Vector火卫一范围兼容的固定维度向量
【发布时间】:2013-08-25 08:28:19
【问题描述】:

在 D 中实现与 Phobos 中的 RandomAccessRange interface 兼容的固定维向量的最聪明的方法是什么?我是否必须重新实现所有成员opIndexlength 等,还是通过委派、别名或模板混合的更聪明的方式?我一直在 github D 项目上查看几个固定大小的向量结构,但似乎没有人关心与 Phobos 范围兼容。 更新:刚刚读到容器应该是引用类型,所以我猜这不是在 D 中这样做的方法吗?

【问题讨论】:

  • std.container 中的约定是 `opSlice()´ 用于获取您可以迭代的范围,哪种类型的范围取决于您

标签: range d linear-algebra fixed-size-types


【解决方案1】:

如果您的向量具有连续的内部存储,那么您可以从opSlice() 返回该数据的一部分:

struct Vector
{
    private real[4] data;

    auto opSlice() { return data[]; }
}

容器不必是引用类型,但使用opSlice 的任何一种方式都是从容器中获取范围的常用方法。

【讨论】:

    猜你喜欢
    • 2012-09-11
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多