Шаблонний клас std::modulus являється класом функціональних об’єктів, які виконують базові арифметичні операції з двома операндами-параметрами перевантаженого оператора дужок (виклик функції). Оголошення:
template <class T> struct modulus:
  binary_function <T,T,T> 
{
  T operator() (const T& x, const T& y) const 
  { return x%y ; }
} ;
Перевантажений оператор дужок отримує передані параметри x i y і повертає значення, яке відображає результат виконання операції отримання остачі від ділення (оператор %) в даному типі. Параметр шаблону T вказує на тип параметрів і тип в якому зберігається повернене значення. Щоб використовувати клас std::modulus необхідно підключити файл functional:
#include <functional> /* усе корисне разом з std::modulus */

Приклади

Приклад #1

Розглянемо найпростіший приклад використання класу modulus - безпосереднє застосування перевантаженого оператора до значень змінних.
#include <functional> /* modulus */
#include <iostream> /* об'єкт cout */
using namespace std ; /* друкуємо усе без std */

/* головна функція програми*/
int main (int argc, char** argv) 
{
  /* створюємо піддослідний примірник класу */
  modulus <int> dpred ;
  
  /* створюємо змінні для збереження значень */
  int a = 10 ,
      b = a ;
  
  /* обраховуємо остачу від ділення 
  ** за допомогою примірника modulus */
  cout << a << " % " << b << " : " << dpred (a, b) << endl ;
  
  /* змінюємо значення змінних */
  a ++ ;
  b -- ;
  
  /* виконуємо операцію відносно нових значень */
  cout << a << " % " << b << " : " << dpred (a, b) << endl ;
  
  return 0 ;
}
Вивід програми: cpp_std_modulust_sample1-cxx
Категорії: