如下,在一个工程中我调用STL的一些算法函数,然后又定义了若干谓词函数。感觉谓词函数放在工程里面,把整个类的架构都弄乱了,破坏了程序的可读性。那么谓词函数除了用模板定义的方法简化,有没有其他的办法?比如在调用谓词函数的函数中写个匿名函数体,python 实现相似的功能就是用lamba实现的,C++有没有?
bool isLonger(const pair &pair1, const pair &pair2) { return pair1.second>pair2.second; }
bool isLarger(const pair &pair1, const pair &pair2) { return pair1.second>pair2.second; }
bool isLarger2(const pair &pair1,const pair&pair2) { return pair1.second>pair2.second; }
bool cntAssist(const pair &pair1) { return pair1.second<=100; }
bool PredTF(const pair& pair1,int articleId) { return pair1.first==articleId; } class PredTFclass { private: const int m; public: PredTFclass(int id):m(id){}; bool operator()(const pair& pair1){return PredTF(pair1,m);}; };
class GT_cls { public: GT_cls(string &s):comparepart(s){} bool operator()(const string &elem) { return elem==comparepart; } private: string comparepart; };
bool myCmp(const pair&pair1,const pair&pair2 ) { return pair1.second>=pair2.second; }
如上,在一个工程中我调用STL的一些算法函数,然后又定义了若干谓词函数。感觉谓词函数放在工程里面,把整个类的架构都弄乱了,破坏了程序的可读性。那么谓词函数除了用模板定义的方法简化,有没有其他的办法?比如在调用谓词函数的函数中写个匿名函数体,python 实现相似的功能就是用lamba实现的,C++有没有?
现行的C++标准中没有lambda. 在即将来到的C++0x标准中会加入lambda的支持http://en.wikipedia.org/wiki/C%2B%2B0x#Lambda_functions_and_expressions