在c ++中是否可以创建可以容纳任意维数组的变量类型?我的意思是可以存储1、2、3 ...维数组的变量。
我想它可以通过模板来制作,但是我不知道怎么做。如果有人可以帮助,我将非常感谢。
答案 0 :(得分:3)
听起来您想“创建一个可以乘以数组的函数”,该函数将“用于许多不同的维度”。
我将处理此问题,就像处理vector
输出运算符一样:使用模板进行递归!
如果我想在添加两个vector
时想做一个将所有数字相加的函数,我可以这样做:
template <typename T>
int operator+(std::vector<T> v1, std::vector<T> v2) {
if(v1.size() != v2.size()) { throw; } //for simplicity
int sum = 0;
for(size_t x = 0; x < v1.size(); x++) {
sum += v1.at(x) + v2.at(x);
}
return sum;
}
请注意,这里的魔术就在行中
sum += v1.at(x) + v2.at(x);
如果v1.at(x)
和v2.at(x)
是std::vector
,我们将再次递归调用此函数。但是,如果它们是int
,我们将它们添加到sum
中并继续。
您可以在此处看到此操作:ideone
您可以为数组乘法做类似的事情。将问题分解成小块,以便您可以使用递归并让模板处理其余部分!
答案 1 :(得分:2)
您是否尝试过动态内存?在下面的情况下,它将创建一个二维数组。
http://www.cplusplus.com/doc/tutorial/dynamic/
如果要具有三维数组,则可以尝试在上述示例的第二步中定义二维数组。
对于四维数组,在步骤2中为三维数组。
或者,您可以继续使用指针。