C ++函数查找3个数组的最大元素

ng

我目前正在学习数组及其工作方式。我获得了以下函数,该函数用于在三个不同的数组A,B和C中查找最大元素:

void findMax(int A[], int B[], int C[])
{
    int maxA = A[0], maxB = B[0], maxC = C[0];
    for (int i = 1; i < MAX_LEN; i++)
    {
        if(maxA < A[i]) maxA = A[i];
        if(maxB < B[i]) maxB = B[i];
        if(maxC < C[i]) maxC = C[i];
    }
}

我的目标是弄清楚如何在不添加额外参数的情况下返回所有三个值(maxA,maxB,maxC)。我可以更改返回类型,并且可以在函数外部编写代码。

我的第一个想法是将void更改为int并创建一个具有这三个最大值的新数组。但是,我认为我需要返回数组的指针,但我们还没有学到。

西尔维奥·梅奥洛(Silvio Mayolo)

有几种方法可以解决此问题。

传统方法(数组)

最简单的方法是使函数返回int[]这样可以以非常简洁的格式轻松返回所有值。但是,该int[]类型不能保证其大小为3或包含您所声称的内容,因此这不是一种非常友好的类型。

面向对象方法(结构)

大多数JAVA爱好者会告诉您制作一个封装该想法的结构或类,例如这样。

struct MaxVals {
    int maxA;
    int maxB;
    int maxC;
    // Possibly a constructor here
};

这仍然是一个非常节省内存的解决方案,比阵列方法干净得多。它还具有更加类型安全的好处;您现在不能MaxVals用4或2来做a int它保证在编译时具有3。但是,这很庞大。它要求您定义一个完全不在函数范围内的新类型,该新类型只能在这种情况下使用。

现代方法(Tuples)

这是C ++的一项新功能,改编自Python和Haskell,因此仅在C ++ 11中可用,而C ++ 11对跨编译器的支持有限。元组是tuple标头中的新数据结构,它可以保证在编译时指定的任何类型的异构,固定大小的数据结构。您将返回类型设置为,std::tuple<int, int, int>并使用初始化结构std::make_tuple(maxA, maxB, maxC)

这种方法具有与struct方法相同的内存优势,并保证了结构,但没有声明一次性类型的所有开销和样板。如果您的编译器支持的话,这将是解决此类问题的理想方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

c语言中一个数组可以存储的最大元素数

C++ 中是否有任何预定义函数可以从给定数组中查找最小和最大元素?

C 中的递归 - 数组的最大元素

查找一行最大元素总和为 c+ 的二维数组

使用单循环和 if 条件在 c 中打印数组的三个最大元素

在位置实例C中查找最大元素的位置

C递归程序从数组中找到最大元素

用C++删除数组中的最大元素

C中的递归。程序必须给出数组的最大元素

Java:使用2个数组查找数组的第K个最大元素

215. 数组中的第 K 个最大元素 C++ 解决方案不起作用

C ++查找矩阵的最小和最大元素之间的元素总和

查找最大和n / 3个最大元素的实现

查找数组中的三个最大元素

如何查找/打印数组的“n”个最大元素?

查找数组中的三个最大元素

查找最大元素及其在泛型数组中的位置,并同时返回一个数组

查找数组的最小和最大元素

查找数组中最大元素的问题

在数组中查找最大元素

如何在多个数组中查找最大元素值?

数组排列,以使一个数组中的最大元素数更大

查找数组的最大元素是另一个元素的除数

C ++-如何从队列中删除最大元素

在未排序的对数组中查找 K 个唯一最大元素

如何对数组中的三个最大元素进行排序和查找?

Boolean 的解释 - 在未排序的数组中查找第 K 个最大元素

查找数组中的第二个最大元素时 malloc 错误

如何改进此代码以查找数组的 k 个最大元素?