问题描述
- C++ primer plus 第6版 中文版 第16章复习题的一个问题
-
奇葩的是课后居然没答案。。。。。。
求正规、严谨、简洁的标准答案!
程序清单16.15(在p708页):functor.cpp//functor.cpp--using a functor
#include尖括号iostream尖括号
#include尖括号list尖括号
#include尖括号iterator尖括号
#include尖括号algorithm尖括号
template//functor class defines operator()()class TooBig
{
private:
T cutoff;public:
TooBig(const T & t):cutoff(t){}
bool operator()(const T & v ){return v > cutoff;}
};
void outint(int n){std::cout<<n<<"";}
int main()
{
using std::list;
using std::cout;
using std::endl;
TooBig尖括号int尖括号f100(100);//limit=100
int vals[10]={50,100,90,180,60,210,415,88,188,201};
list尖括号int尖括号yadayada(vals,vals+10);//range constructor
list尖括号int尖括号etcetera(vals,vals+10);
//c++11 can use the following instead
//listyadayada={50,100,90,180,60,210,415,88,188,201};
//listetcetera{50,100,90,180,60,210,415,88,188,201};
cout <<"Original lists:n";
for_each(yadayada.begin(),yadayada.end(),outint);
cout << endl;
for_each(etcetera.begin(),etcetera.end(),outint);
cout << endl;
yadayada.remove_if(f100);//use a named function object
etcetera.remove_if(TooBig尖括号int尖括号(200));//construct a function object
cout <<"Trimmed lists:n";
for_each(yadayada.begin(),yadayada.end(),outint);
cout << endl;
for_each(etcetera.begin(),etcetera.end(),outint);
cout << endl;
return 0;
}
解决方案
这个问题要问什么?别人也许没有说的那本书啊。!?怎么搞!
解决方案二:
这个拿到VS中运行一下,结果不就出来了。