我想写一个n维直方图类.它应该是包含其他箱子等的箱子形式,其中每个箱子包含最小和最大范围,以及指向下一个维度箱子的指针
bin被定义为
template<typename T>
class Bin {
float minRange, maxRange;
vector<Bin<either Bin or ObjectType>> bins;
}
Run Code Online (Sandbox Code Playgroud)
这个定义是递归的.因此,在运行时,用户定义直方图的维度
so if its just 1-dimension, then
Bin<Obj>
while 3-dimensions
Bin<Bin<Bin<Obj>>>
Run Code Online (Sandbox Code Playgroud)
这可能吗?
问候
当然,C++ 11具有模板的可变长度参数列表.即使没有C++ 11,如果所有维度都具有相同的类型,也可以使用专门化:
template <typename T, unsigned nest>
struct Bin {
std::vector<Bin<T, (nest-1)> > bins;
};
template <typename T>
struct Bin<T,0> {
T content;
};
Run Code Online (Sandbox Code Playgroud)
您只能在运行时将维度指定到一定程度.如果它受固定值限制,您甚至可以动态选择适当的类型.但是,请考虑使用一维向量而不是多维锯齿状向量!
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |