用于保存任何维数组的C ++变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于保存任何维数组的C ++变量相关的知识,希望对你有一定的参考价值。
在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中。
或者,您可以继续使用指针。
以上是关于用于保存任何维数组的C ++变量的主要内容,如果未能解决你的问题,请参考以下文章