如何在C ++中检查两个数组之间的等效性?

时间:2019-02-04 00:12:49

标签: c++ arrays

所以我有两个数组,我需要找到一种方法来查找C ++中两个不同数组之间的等效性。这是我做的功能:

    bool equivalent(int a[], int b[], int n)
        for (int i=0; i < n; i++){
            if (b[(i + 2) % 5] == a[i])
            return true;
            else return false;
        }
    }

这是数组:

    int main() {
    cout << boolalpha; 
    int a1[5] = {1, 2, 3, 4, 5};
    int a2[5] = {3, 4, 5, 1, 2};
    cout << equivalent(a1, a2, 5) << endl;

我知道我的关节矫正术是正确的,因为例如a2 [4],4加2为6,mod 5为1,并且在a1 [0]位置,值为2,该值与a2 [4]值。我唯一的问题是,结果应该为true,但是因为for循环从0开始,所以整个函数陷入混乱,因为第二个数组索引需要从另一个数字开始才能起作用。我将如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

  

我将如何解决这个问题?

通过使用调试器。逐行浏览程序。如果行为与预期的不同,那么您已经找到了问题。

程序有两个问题:

  

我知道我的关节矫正术是正确的,因为例如a2 [4],4加2为6,mod 5为1,并且在a1 [0]位置,值为2,该值与a2 [4]值。

  1. 但是您要比较a1 [0]与a2 [2],而不是a2 [4]。您已经颠倒了参数的顺序。

  2. 您只比较a1 [0],然后返回结果。为了比较整个数组,在检查完所有元素之前,您不得返回(除非返回false的分支可以提早返回)。

答案 1 :(得分:0)

我认为简单的方法是将两个数组都转换为字符串,然后进行比较。