C ++ uses predicate function

Source code examples:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

class IsEven
{
public:
  bool operator()(int x)
  {
    return x % 2 == 0;
  }
};

class LessThan
{
public:
  bool operator()(int a, int b)
  {
    return a < b;
  }
};

int main()
{
  int arr[] {12,25,36,8,11,15,89,32,71};
  vector<int> vec{12,25,36,8,11,15,89,32,71};

  cout<<"Original form of both array and vector:\n";
  for(int e:arr)
  {
    cout<<e<<" ";
  }

  //sort the array
  sort(begin(arr), end(arr),LessThan());

  //print the sorted array
  cout<<"\nHere is the aorted array:\n";
  for(int e:arr)
  {
    cout<<e<<" ";
  }

  //Call remove_if for even values
  auto start_removed = remove_if(begin(vec), end(vec), IsEven());
  cout<<"\nHere is the vector after call to remove_if:\n";
  for(int e:vec)
  {
    cout<<e<<" ";
  }

  //Erase the remove_if'd elements
  vec.erase(start_removed, end(vec));
  cout<<"\nHere is the vector after call to erase:\n";
  for(int e:vec)
  {
    cout<<e<<" ";
  }
  cout<<endl;

  return 0;

}

 

The results show:

 

Guess you like

Origin www.cnblogs.com/ruigelwang/p/12635341.html