Mega Code Archive

 
Categories / C++ / Function
 

Use member function reference function adaptor

#include <iostream> #include <vector> #include <algorithm> #include <functional> using namespace std; class Numbers {   int val; public:   Numbers() {       val = 0;    }   Numbers(int x) {       val = x;    }   bool showval() {       cout << val << " ";       return true;    }   bool isPrime() {     for(int i = 2; i <= (val/2); i++)       if(!(val%i))           return false;     return true;   }   bool isEven() {       return (bool) !(val % 2);    }   bool isOdd() {       return (bool) (val %2);    }   }; int main() {   vector<Numbers> vectorObject(10);   vector<Numbers>::iterator end_p;   int i;   for(i = 0; i <10; i++)     vectorObject[ i ] = Numbers(i+1);   cout << "Sequence contains: ";   for_each(vectorObject.begin(), vectorObject.end(), mem_fun_ref(&Numbers::showval));   cout << endl;   // remove the primes   end_p = remove_if(vectorObject.begin(), vectorObject.end(), mem_fun_ref(&Numbers::isPrime));     cout << "Sequence after removing primes: ";   for_each(vectorObject.begin(),  end_p, mem_fun_ref(&Numbers::showval));   cout << endl;   for(i = 0; i <10; i++)     vectorObject[ i ] = Numbers(i + 1);      end_p = remove_if(vectorObject.begin(), vectorObject.end(), mem_fun_ref(&Numbers::isEven));   cout << "Sequence after removing even values: ";   for_each(vectorObject.begin(), end_p, mem_fun_ref(&Numbers::showval));   cout << endl;   for(i = 0; i < 10; i++)     vectorObject[ i ] = Numbers(i + 1);   end_p = remove_if(vectorObject.begin(), vectorObject.end(), mem_fun_ref(&Numbers::isOdd));    cout << "Sequence after removing odd values: ";   for_each(vectorObject.begin(), end_p, mem_fun_ref(&Numbers::showval));   return 0; }