2

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

4

1 回答 1

2

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

struct Vector
{
    private real[4] data;

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

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

于 2013-08-26T14:30:08.773 回答