创新互联专注于企业营销型网站、网站重做改版、淮北网站定制设计、自适应品牌网站建设、html5、商城网站定制开发、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为淮北等各大城市提供网站开发制作服务。>// functional_mem_fun.cpp
// compile with: /EHsc#include
#include
#include
#include
#include
using namespace std;
class StoreVals
{
int val;
public:
StoreVals() { val= 0; }
StoreVals(int j) { val = j; }
bool display() { cout << val << " "; return true; }
int squareval() { val *= val; return val; }
int lessconst(int k) {val -= k; return val; }
};
int main( )
{
vector v1;
StoreVals sv1(5);
v1.push_back(&sv1);
StoreVals sv2(10);
v1.push_back(&sv2);
StoreVals sv3(15);
v1.push_back(&sv3);
StoreVals sv4(20);
v1.push_back(&sv4);
StoreVals sv5(25);
v1.push_back(&sv5);
cout<< "The original values stored are:" ;
for_each(v1.begin(), v1.end(), mem_fun(&StoreVals::display));
cout<< endl;
// Use of mem_fun calling member function through a pointer
// square each value in the vector using squareval () for_each(v1.begin(), v1.end(), mem_fun(&StoreVals::squareval));
cout<< "The squared values are:" ;
for_each(v1.begin(), v1.end(), mem_fun(&StoreVals::display));
cout<< endl;
// Use of mem_fun1 calling member function through a pointer
// subtract 5 from each value in the vector using lessconst () for_each(v1.begin(), v1.end(),
bind2nd (__gnu_cxx::mem_fun1(&StoreVals::lessconst), 5));
cout<< "The squared values less 5 are:" ;
for_each(v1.begin(), v1.end(), mem_fun(&StoreVals::display));
cout<< endl;
}