C++ Program to Demonstrate Usage of bind1st Binder

bookmark

#include <iostream>
#include <algorithm>
#include <functional>
#include <vector>
 
using std::cout;
using std::endl;
typedef std::vector <int>::const_iterator const_iterator;
 
void print(const std::vector <int>& v)
{
    const_iterator i;
    for(i = v.begin(); i != v.end(); i++)
    {
        std::cout << *i << " ";
    }
    std::cout << std::endl;
}
 
int main()
{
    std::vector <int> v(10);
    const_iterator p;
 
    for(int i = 0; i < 10; i++)
    {
        v[i] = i % 8;
    }
    cout << "Vector : ";
    print(v);
    p = find_if(v.begin(), v.end(), std::bind1st(std::greater <int>(), 7));
    if (p != v.end())
    {
        std::cout << "Element less than or equal to 7 => "
                  << *p << " at position " << p - v.begin() + 1
                  << std::endl;
    }
    else
    {
        std::cout << "No element less than or equal to 7"
                  << std::endl;
    }
    p = find_if(v.begin(), v.end(), std::bind1st(std::less <int>(), 7));
    if (p != v.end())
    {
        std::cout << "Element greater than or equal to 7 => "
                  << *p << " at position " << p - v.begin() + 1
                  << std::endl;
    }
    else
    {
        std::cout << "No element greater than or equal to 7"
                  << std::endl;
    }
}

 

Output:
Vector : 0 1 2 3 4 5 6 7 0 1 
Element less than or equal to 7 => 0 at position 1
No element greater than or equal to 7