C++ 函数对象
这里记录一个使用函数对象的例子:
1 // ConsoleApplication25.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include <vector> 6 #include <string> 7 #include <iostream> 8 #include <functional> 9 #include "stdlib.h" 10 #include "time.h" 11 #include <algorithm> 12 using namespace std; 13 14 15 int main() 16 { 17 vector<int> vect; 18 19 cout << "Simple :" << endl; 20 21 plus<int> add; 22 cout << add(10, 20) << endl; 23 24 cout << "for vector:" << endl; 25 26 srand(time(NULL)); 27 for (size_t i = 0; i < 10; ++i) 28 { 29 vect.push_back(rand()); 30 } 31 sort(vect.begin(),vect.end(), greater<int>()); 32 for (vector<int>::iterator begin = vect.begin(); begin != vect.end(); ++begin) 33 { 34 cout << *begin << endl; 35 } 36 37 int final_count = count_if(vect.begin(), vect.end(), bind2nd(greater<int>(),1024)); 38 cout << "Final greater than 1024 is : " << final_count << endl; 39 40 system("PAUSE"); 41 return 0; 42 }
其中要点如下:
- 生成随机数的方法:必须包含#include "stdlib.h",#include "time.h",这两个一个作为时间种子,一个生成随机数字。
- 使用标准库算法,必须包含#include <algorithm>。
- 使用标准库的函数对象,必须包含#include <functional>。
具体用法见上面例子。