如何比较两个相等但一个按升序排列而另一个按降序排列的数组?

Ahm*_*lil 3 c++ arrays sorting

int array1[] = {1,2,3,4,5};
int array2[] = {5,4,3,2,1};
if (std::equal(std::begin(array1), std::end(array1), std::begin(array2)))
    cout << "Arrays are equal.";
else
    cout << "Arrays are not equal.";
Run Code Online (Sandbox Code Playgroud)

现在两个数组相等,但一个是升序,另一个是降序,所以这段代码的输出是“数组不相等”,我们如何输出“数组相等”?

Jar*_*vis 12

使用reverse_iterator

std::equal(std::begin(array1), std::end(array1), std::rbegin(array2))
Run Code Online (Sandbox Code Playgroud)

  • @MohsanAli 它还可以编译成非常高效的代码。这是在[Compiler Explorer](https://godbolt.org/z/Eob73s)上,内部循环只有7条汇编指令。 (2认同)