Template Function thrust::equal(InputIterator1, InputIterator1, InputIterator2, BinaryPredicate)

Function Documentation

template<typename InputIterator1, typename InputIterator2, typename BinaryPredicate>
bool thrust::equal(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, BinaryPredicate binary_pred)

equal returns true if the two ranges [first1, last1) and [first2, first2 + (last1 - first1)) are identical when compared element-by-element, and otherwise returns false.

This version of equal returns true if and only if for every iterator i in [first1, last1), binary_pred(*i, *(first2 + (i - first1))) is true.

The following code snippet demonstrates how to use

equal to compare the elements in two ranges modulo 2.
Return

true, if the sequences are equal; false, otherwise.

Parameters
  • first1: The beginning of the first sequence.

  • last1: The end of the first sequence.

  • first2: The beginning of the second sequence.

  • binary_pred: Binary predicate used to test element equality.

Template Parameters
  • InputIterator1: is a model of Input Iterator, and InputIterator1's value_type is convertible to BinaryPredicate's first_argument_type.

  • InputIterator2: is a model of Input Iterator, and InputIterator2's value_type is convertible to BinaryPredicate's second_argument_type.

  • BinaryPredicate: is a model of Binary Predicate.

#include <thrust/equal.h>

struct compare_modulo_two
{
  __host__ __device__
  bool operator()(int x, int y) const
  {
    return (x % 2) == (y % 2);
  }
};
...
int x[6] = {0, 2, 4, 6, 8, 10};
int y[6] = {1, 3, 5, 7, 9, 11};

bool result = thrust::equal(x, x + 5, y, compare_modulo_two());

// result is true

See

http://www.sgi.com/tech/stl/equal.html