Mega Code Archive

 
Categories / C++ / Algorithm
 

Transform a vector with bind1st and divides

#include <algorithm> #include <functional> #include <iomanip> #include <numeric> #include <string> #include <vector> #include <iostream> using namespace std; template <class T> void print(T& c){    for( typename T::iterator i = c.begin(); i != c.end(); i++ ){       std::cout << *i << endl;    } } bool in_string( char c, const string target ){     return target.find( c ) != string::npos;  } int main( ){    vector<float> v( 5, 1 );    partial_sum( v.begin(), v.end(), v.begin() );    print( v);    transform( v.begin(), v.end(), v.begin(),bind1st( divides<float>(), 1 ) );    cout << fixed << setprecision( 2 );    print( v);    // convert to percentages    transform( v.begin(), v.end(), v.begin(),bind1st( multiplies<float>(), 100 ) );    print( v);    // make a sequence starting at -10 and increasing by 100    v.assign( v.size(), 100 );    v[0] = -10;    partial_sum( v.begin(), v.end(), v.begin() );    print( v );    // truncate numbers to fall between 0 and 255 inclusive    replace_if( v.begin(), v.end(),bind2nd( greater<float>(), 255 ), 255 );    replace_if( v.begin(), v.end(), bind2nd( less<float>(), 0 ), 0 );    print( v); }