std::equal() in C++ (original) (raw)

Last Updated : 11 Jun, 2022

std::equal() helps to compares the elements within the range [first_1,last_1) with those within range beginning at first_2. Syntax 1:

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

first_1, last_1 : Initial and final positions of the first sequence. All the elements are present within a range [first_1,last_1) first2 : Initial position of the second sequence.

Returns : true, if all of the elements in both ranges match; otherwise false

CPP `

// C++ program illustrating // use of bool equal (InputIterator1 first1, InputIterator1 last1, // InputIterator2 first2)

#include <bits/stdc++.h>

int main() { int v1[] = { 10, 20, 30, 40, 50 }; std::vector<int> vector_1 (v1, v1 + sizeof(v1) / sizeof(int) );

// Printing vector1
std::cout &lt;&lt; &quot;Vector contains : &quot;;
for (unsigned int i = 0; i &lt; vector_1.size(); i++)
    std::cout &lt;&lt; &quot; &quot; &lt;&lt; vector_1[i];
std::cout &lt;&lt; &quot;\n&quot;;

// using std::equal()
// Comparison within default constructor
if ( std::equal (vector_1.begin(), vector_1.end(), v1) )
    std::cout &lt;&lt; &quot;The contents of both sequences are equal.\n&quot;;
else
    printf(&quot;The contents of both sequences differ.&quot;);

}

`

Output:

Vector contains : 10, 20, 30, 40, 50 The contents of both sequences are equal.

Syntax 2:

template bool equal (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, BinaryPredicate pred);

first_1, last_1 : Initial and final positions of the first sequence. All the elements are present within a range [first_1,last_1) first2 : Initial position of the second sequence. pred : Binary function that accepts two elements as argument and returns a value convertible to boolean.

Returns : true, if all of the elements in both ranges match; otherwise false

CPP `

// C++ program illustrating // use of bool equal (InputIterator1 first1, InputIterator1 last1, // InputIterator2 first2, BinaryPredicate pred);

#include <bits/stdc++.h>

bool pred(int i, int j) { return (i != j); }

int main() { int v1[] = { 10, 20, 30, 40, 50 }; std::vector<int> vector_1 (v1, v1 + sizeof(v1) / sizeof(int) );

// Printing vector1
std::cout &lt;&lt; &quot;Vector contains : &quot;;
for (unsigned int i = 0; i &lt; vector_1.size(); i++)
    std::cout &lt;&lt; &quot; &quot; &lt;&lt; vector_1[i];
std::cout &lt;&lt; &quot;\n&quot;;

// using std::equal()
// Comparison based on pred
if ( std::equal (vector_1.begin(), vector_1.end(), v1, pred) )
    std::cout &lt;&lt; &quot;The contents of both sequences are equal.\n&quot;;
else
    printf(&quot;The contents of both sequences differ.&quot;);

}

`