In this article, we will discuss how to compare two arrays in C++.

**Table Of Contents**

## Problem Description

Here, we are given two arrays, and we have to find if they are equal or not.

**Input**

int arr1[] = {12, 56, 823, 7, 1023}; int arr2[] = {12, 56, 823, 7, 1023};

**Output**

Both are equal

There are two method to compare array for equality in C++. Let’s see how we can do it,

## Compare Arrays using Linear traversal (Iterative Method)

In this method, we will iterate the whole array

These are following steps :

- Firstly we check the size of both array.
- If size are not equal then array are not equal.
- Initialize a variable
**isequal**with true - If size are equal then iterate a for loop and compare all values of an array with another array
- If we find any index where values are not equal break the loop and set the value of
**isequal**to false. - Print the final answer

`Time Complexity: O(n)`

`Space Complexity: O(1)`

**Example**

// C++ program to Compare array for equality #include <iostream> using namespace std; // Driver Code int main() { int arr1[] = {12, 56, 823, 7, 1023}; int arr2[] = {12, 56, 823, 7, 1023}; // n1 is the size of array 1 int n1 = sizeof(arr1) / sizeof(arr1[0]); // n2 is the size of array 2 int n2 = sizeof(arr2) / sizeof(arr2[0]); //Intialize a variable bool isequal = true; if(n1 != n2) { isequal = false; } else { // Iterate over the array for(int i=0; i < n1; i++) { if(arr1[i] != arr2[i]) { isequal = false; break; } } } if(isequal) { cout<<"Both Arrays are equal" << endl; } else { cout<<"Both Arrays are not equal" << endl; } return 0; }

**Output**

Both Arrays are equal

Let’s take another example where array are not equal

// C++ program to Compare array for equality #include <iostream> using namespace std; // Driver Code int main() { int arr1[] = {12, 56, 823, 17, 1023}; int arr2[] = {12, 56, 823, 7, 1023}; // n1 is the size of array 1 int n1 = sizeof(arr1) / sizeof(arr1[0]); // n2 is the size of array 2 int n2 = sizeof(arr2) / sizeof(arr2[0]); //Intialize a variable bool isequal = true; if(n1 != n2) { isequal = false; } else { // Iterate over the array for(int i=0; i < n1; i++) { if(arr1[i] != arr2[i]) { isequal = false; break; } } } if(isequal) { cout<<"Both Arrays are equal" << endl; } else { cout<<"Both Arrays are not equal" << endl; } return 0; }

**Output**

Both Arrays are not equal

## Compare Arrays using STL function equal()

In this method we use a STL function to compare array for equality.

**STL function is : equal()**

bool equal (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2);

It compares the element in range **[first1,last1)** with the elements in range starting from **first2**.

`Time Complexity: O(n)`

`Space Complexity: O(1)`

**Example**

// STL Function to compare array for equality #include <iostream> using namespace std; // Driver Code int main() { int arr1[] = {12, 56, 823, 7, 1023}; int arr2[] = {12, 56, 823, 7, 1023}; // n1 is the size of array 1 int n1 = sizeof(arr1) / sizeof(arr1[0]); // n2 is the size of array 2 int n2 = sizeof(arr2) / sizeof(arr2[0]); // equal() function return bool // 1 if both are equal // 0 of both are not equal if(equal(arr1, arr1 + n1, arr2)) { cout<<"Both Arrays are equal" << endl; } else { cout<<"Both Arrays are not equal" << endl; } return 0; }

**Output**

Both Arrays are equal

Let’s take another example where element doestn’t exist

// STL Function to compare array for equality #include <iostream> using namespace std; // Driver Code int main() { int arr1[] = {12, 56, 823, 27, 1023}; int arr2[] = {12, 56, 823, 7, 1023}; // n1 is the size of array 1 int n1 = sizeof(arr1) / sizeof(arr1[0]); // n2 is the size of array 2 int n2 = sizeof(arr2) / sizeof(arr2[0]); // equal() function return bool // 1 if both are equal // 0 of both are not equal if(equal(arr1, arr1 + n1, arr2)) { cout<<"Both Arrays are equal" << endl; } else { cout<<"Both Arrays are not equal" << endl; } return 0; }

**Output**

Both Arrays are not equal

## Summary

We have seen two different method to compare arrays for equality in C++. One is the naive solution. Another one is using the STL function equal(). Every Method has it’s own time complexity and space complexity.

### Do you want to Learn Modern C++ from best?

We have curated a list of **Best C++ Courses,** that will teach you the cutting edge Modern C++ from the absolute beginning to advanced level. It will also introduce to you the word of Smart Pointers, Move semantics, Rvalue, Lambda function, auto, Variadic template, range based for loops, Multi-threading and many other latest features of C++ i.e. from **C++11 to C++20**.

#####
**Check Detailed Reviews of Best Modern C++ Courses**

Remember, C++ requires a lot of patience, persistence, and practice. So, start learning today.