n-dimensional vector

n-dimensional vector

本文关键字:vector n-dimensional      更新时间:2023-10-16

假设我想声明一个...的向量的向量...(最多n维)。

喜欢:

using namespace std;
// for n=2
vector<vector<int> > v2;
// for n=3
vector<vector<vector<int> > > v3;
// for n=4
vector<vector<vector<vector<int> > > > v3;

是否有一种方法可以使用模板元编程进行任意n?

是的,这很简单。

很像诱导的证明,我们设置了一个递归情况和一个(部分专业的)基本案例,以结束递归。

template<size_t dimcount, typename T>
struct multidimensional_vector
{
    typedef std::vector< typename multidimensional_vector<dimcount-1, T>::type > type;
};
template<typename T>
struct multidimensional_vector<0,T>
{
    typedef T type;
};
multidimensional_vector<1, int>::type v;
multidimensional_vector<2, int>::type v2;
multidimensional_vector<3, int>::type v3;
multidimensional_vector<4, int>::type v4;