//============================================================================
// Name : JNIC++.cpp
// Author : kris.zhang
// Version :
// Copyright : @zhangkaiqiang001@gmail.com
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
/*
* 定义了调用操作符的类,其对象常称为函数对象,即它们是行为类似函数的对象。
*/
struct absInt{
absInt(size_t val=0):bound(val){}
bool operator()(const string &s){
return s.size()>=bound;
}
int operator() (int val){
return 11;
}
int operator() (int val,int b){
return val;
}
private:
std::string::size_type bound;
};
int main() {
int i=-42;
absInt absObj;
vector<string> words;
string next_word="s";
words.push_back(next_word);
words.push_back("dqwer");
words.push_back("jfghghjh");
words.push_back("fe");
words.push_back("mfg");
words.push_back("hsdf");
unsigned int a=absObj(i);
int b=absObj(i,i);
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
cout << "a="<<a<< endl; // prints !!!Hello World!!!
cout << "b="<<b<< endl;
for(int i=1;i<=10;i++){///使用函数对象计算长度在 1 到 10 个字符的单词数
cout<<count_if(words.begin(),words.end(),absInt(i))<<"words"<< i<<" charactoers or longer!"<<endl;
}
return 0;
}
output:
a=11
b=-42
6words1 charactoers or longer!
5words2 charactoers or longer!
4words3 charactoers or longer!
3words4 charactoers or longer!
2words5 charactoers or longer!
1words6 charactoers or longer!