Open In App

Modulus function in C++ STL

Last Updated : 14 Sep, 2018
Improve
Improve
Like Article
Like
Save
Share
Report

Modulus function is used to return the value of the modulus between its two arguments. It works same as modulus operator works.

template  struct modulus : binary_function  
{
  T operator() (const T& x, const T& y) const 
  {
   return x%y;
  }
};

Member types:

  • Type of first argument
  • Type of second argument
  • Type of result returned by member operator

Note: We must include library ‘functional’ and ‘algorithm’ to use modulus and transform.

Bewlo programs illustrate the working of modulus function:




// C++ program to implement modulus function
#include <algorithm> // transform
#include <functional> // modulus, bind2nd
#include <iostream> // cout
using namespace std;
  
int main()
{
    // defining the array
    int array[] = { 8, 6, 3, 4, 1 };
  
    int remainders[5];
  
    // transform function that helps to apply
    // modulus between the arguments
    transform(array, array + 5, remainders,
              bind2nd(modulus<int>(), 2));
  
    for (int i = 0; i < 5; i++)
        // printing the results while checking
        // whether no. is even or odd
        cout << array[i] << " is a "
             << (remainders[i] == 0 ? "even" : "odd")
             << endl;
  
    return 0;
}


Output:

8 is a even
6 is a even
3 is a odd
4 is a even
1 is a odd




// C++ program to implement modulus function
#include <algorithm> // transform
#include <functional> // modulus, bind2nd
#include <iostream> // cout
#include <iterator>
#include <vector>
using namespace std;
  
int main()
{
  
    // Create a std::vector with elements
    // {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    vector<int> v;
    for (int i = 0; i < 10; ++i)
        v.push_back(i);
  
    // Perform a modulus of two on every element
    transform(v.begin(), v.end(), v.begin(),
              bind2nd(modulus<int>(), 2));
  
    // Display the vector
    copy(v.begin(), v.end(),
         ostream_iterator<int>(cout, " "));
    cout << endl;
  
    return 0;
}


Output:

0 1 0 1 0 1 0 1 0 1


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads