是否可以在 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
您可以对数组乘法执行类似的操作。将问题分解成更小的部分,以便您可以使用递归并让模板处理其余部分!
关于用于保存任何维数组的 C++ 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55796002/