在D中实现与Phobos中的RandomAccessRange
interface兼容的固定维向量最聪明的方法是什么?我是否必须重新实现所有成员opIndex
,length
等,或者是通过委派更聪明的方式,别名这个或模板mixins?我一直在github D项目上看一些固定大小的矢量结构,但似乎没有人关心与Phobos系列兼容。 更新:刚刚读到容器应该是引用类型所以我想这不是D中的方法吗?
答案 0 :(得分:2)
如果您的矢量具有连续的内部存储空间,那么您只需从opSlice()
返回一部分数据:
struct Vector
{
private real[4] data;
auto opSlice() { return data[]; }
}
容器不一定是引用类型,但使用opSlice
的任何一种方法都是从容器中获取范围的常用方法。