Phobos范围兼容的固定尺寸矢量

时间:2013-08-25 08:28:19

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

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

1 个答案:

答案 0 :(得分:2)

如果您的矢量具有连续的内部存储空间,那么您只需从opSlice()返回一部分数据:

struct Vector
{
    private real[4] data;

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

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