在学习STL中的算法的时候,要分清函数返回的是迭代器还是函数对象。
所谓的函数对象,就是在一个类模板中,重载了操作符()。函数对象跟普通函数的区别就在于函数对象可以保留状态信息。
重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象。一个类对象,表现出一个函数的特征,就是通过“对象名+(参数列表)”的方式使用一个类对象,如果没有上下文,完全可以把它看作一个函数对待。
这是通过重载类的operator()来实现的。
“在标准库中,函数对象被广泛地使用以获得弹性”,标准库中的很多算法都可以使用函数对象或者函数来作为自定的回调行为;
具体看如下代码:
#include <iostream>
using namespace std;
#include "string"
#include <vector>
#include <list>
#include "set"
#include &l