Demonstrate bind2nd() : bind2nd « STL Algorithms Helper « C++ Tutorial






#include <iostream>
#include <list>
#include <functional>
#include <algorithm>
using namespace std;

int main()
{
  list<int> lst;
  list<int>::iterator p, endp;

  for(int i=1; i < 20; i++) lst.push_back(i);

  cout << "Original sequence:\n";
  p = lst.begin();
  while(p != lst.end()) {
    cout << *p << " ";
    p++;
  }
  cout << endl;

  endp = remove_if(lst.begin(), lst.end(),
                   bind2nd(greater<int>(), 8));

  cout << "Resulting sequence:\n";
  p = lst.begin();
  while(p != endp) {
    cout << *p << " ";
    p++;
  }

  return 0;
}
Original sequence:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Resulting sequence:
1 2 3 4 5 6 7 8








32.6.bind2nd
32.6.1.Demonstrate bind2nd()
32.6.2.Use the generic count algorithm with predicate: Determine the number of array elements that are not equal to 1
32.6.3.Use bind2nd() to create a unary function object that will return true when a value is greater than 10.
32.6.4.replace_if, bind2nd and less
32.6.5.replace_if bind2nd and greater
32.6.6.trasform, bind2nd and plus