c++arrayscomparisonequality

Why does == equality comparison between arrays not work?


Can someone please explain to me why the output from the following code is saying that the arrays are not equal?

int main()
{    
    int iar1[] = {1, 2, 3, 4, 5};
    int iar2[] = {1, 2, 3, 4, 5};

    if (iar1 == iar2)
        cout << "Arrays are equal.";
    else
        cout << "Arrays are not equal.";
}

Solution

  • if (iar1 == iar2)
    

    Here iar1 and iar2 are decaying to pointers to the first elements of the respective arrays. Since they are two distinct arrays, the pointer values are, of course, different and your comparison tests not equal.

    To do an element-wise comparison, you must either write a loop; or use std::array instead

    std::array<int, 5> iar1 {1,2,3,4,5};
    std::array<int, 5> iar2 {1,2,3,4,5};
    
    if( iar1 == iar2 ) {
      // arrays contents are the same
    
    } else {
      // not the same
    
    }