在c ++中是否可以创建一种可以包含任何维度的数组的变量?我的意思是一个可以存储1,2,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
你可以为你的数组乘法做类似的事情。将问题分解为更小的部分,以便您可以使用递归并让模板处理其余部分!
你有没有试过动态记忆?在下面的例子中,它创建了一个二维数组。
http://www.cplusplus.com/doc/tutorial/dynamic/
如果你想拥有一个三维数组,也许你可以尝试在上面例子的第二步中定义一个二维数组。
对于四维数组,第三维数组在步骤2中。
或者,您可以继续使用指针。