我的目标是创建一个具有密集或稀疏存储的2D数组类,并支持子矩阵。
我希望能够有密集存储(std :: vector)或稀疏(std :: map)
我还希望能够使用几乎使用相同的get / set接口的子矩阵
下面的模拟课程:
struct ArrayBox
{
int w,h,x,y;
bool in_range(...)
};
template<class T>
struct DenseArray2D
{
ArrayBox box;
std::vector<T> data;
T& get(x,y)
// etc
}
template<class T>
struct SparseArray2D
{
ArrayBox box;
std::map<size_t, T> data;
T& get(x,y)
// etc, interface identical to above
}
现在,我如何添加对子数组的支持,以便尽可能少地编写相同的代码?子阵列的唯一区别是它具有对数据的引用(在ctor中给出)和不同的框
上述设计当然不是一成不变的,所以欢迎任何建议。