Шаблонний клас std::not_equal_to призначений для порівняння двох об’єктів. Клас призначений для створення примірників функціональних об’єктів, тобто таких, які мають перевантажений оператор дужок (виклик функції). Оголошення класу виглядає приблизно наступним чином:
template <class T> struct not_equal_to:
binary_function <T,T,bool>
{
bool operator() (const T& x, const T& y) const
{ return x!=y ; }
} ;
Перевантажений оператор дужок повертає true, якщо параметри x i y являються не еквівалентними, і false у іншому випадку.
Щоб використовувати клас, необхідно у код підключити файл functional:
#include <functional> /* усе корисне разом з std::not_equal_to */
Приклади
Розглянемо найпростіший приклад використання предикату - пряме порівняння значень змінних і виведення повідомлення програмою.
#include <functional> /* not_equal_to */
#include <iostream> /* об'єкт cout */
using namespace std ; /* пишемо усе без std */
/* головна функція програми*/
int main (int argc, char** argv)
{
/* створюємо піддослідний примірник класу */
not_equal_to <int> dpred ;
/* створюємо змінні для збереження значень */
int a = 10 ,
b = a ;
/* тестуємо їхню еквівалентність
** за допомогою примірника not_equal_to */
cout << a << " != " << b << " : " << dpred (a, b) << endl ;
/* змінюємо значення змінних */
a -- ;
b ++ ;
/* повторно тестуємо еквівалентність змінних */
cout << a << " != " << b << " : " << dpred (a, b) << endl ;
return 0 ;
}
Вивід програми: