gpt4 book ai didi

用于保存任何维数组的 C++ 变量

转载 作者:行者123 更新时间:2023-11-30 01:02:35 25 4
gpt4 key购买 nike

是否可以在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com