STL中泛型算法find_if()与sort()的应用举例及详解

来源:互联网 发布:百科词条优化 编辑:程序博客网 时间:2024/05/16 04:51

STL中泛型算法find_if()与sort()的应用举例及详解

 

请认真看下原型:



经常可以看到这种用法:


17行比较好理解,19行怎么解释呢?如果想在比较函数中加入参数又应如何解决呢?

请看下面这个例子,在C++中class与struct在这方面的应用没有太大差别,我这里用struct来实现Predicate pred与Compare comp。



由此可见find_if()调用的实际是score_doc_compare("文档1")(),同理sort()调用的是score_doc_compare()()。
在C++中,score_doc_compare("文档1")或score_doc_compare()创建了一个结构体实例,然后由find_if()或sort()调用了()操作符。
如果想加入参数,如上例中find_if的用法,只需在Compare comp中添加载入对应参数的构造函数和成员变量,然后重载()操作符时调取这个成员变量当参数就OK了。

原创粉丝点击