2 謂詞
3 內建函式物件
概念:
本質:
函式物件(仿函式)是乙個類,不是乙個函式
特點:
示例:
#include //1、函式物件在使用時,可以像普通函式那樣呼叫, 可以有引數,可以有返回值
class myadd
};void test01()
//2、函式物件可以有自己的狀態
class myprint
void operator()(string test)
int count; //內部自己的狀態
};void test02()
//3、函式物件可以作為引數傳遞
void doprint(myprint &mp , string test)
void test03()
int main()
總結:
概念:
示例:
#include #include //1.一元謂詞
struct greaterfive
};void test01()
vector::iterator it = find_if(v.begin(), v.end(), greaterfive());
if (it == v.end())
else
}int main()
總結:引數只有乙個的謂詞,稱為一元謂詞
示例:
#include #include //二元謂詞
class mycompare
};void test01()
cout << endl;
cout << "----------------------------" << endl;
//使用函式物件改變演算法策略,排序從大到小
sort(v.begin(), v.end(), mycompare());
for (vector::iterator it = v.begin(); it != v.end(); it++)
cout << endl;
}int main()
總結:引數只有兩個的謂詞,稱為二元謂詞
概念:
分類:
用法:
功能描述:
仿函式原型:
示例:
#include //negate
void test01()
//plus
void test02()
int main()
總結:使用內建函式物件時,需要引入標頭檔案#include
功能描述:
仿函式原型:
示例:
#include #include #include class mycompare
};void test01()
cout << endl;
//自己實現仿函式
//sort(v.begin(), v.end(), mycompare());
//stl內建仿函式 大於仿函式
sort(v.begin(), v.end(), greater());
for (vector::iterator it = v.begin(); it != v.end(); it++)
cout << endl;
}int main()
總結:關係仿函式中最常用的就是greater<>大於
功能描述:
函式原型:
示例:
#include #include #include void test01()
cout << endl;
//邏輯非 將v容器搬運到v2中,並執行邏輯非運算
vectorv2;
v2.resize(v.size());
transform(v.begin(), v.end(), v2.begin(), logical_not());
for (vector::iterator it = v2.begin(); it != v2.end(); it++)
cout << endl;
}int main()
總結:邏輯仿函式實際應用較少,了解即可 stl 仿函式 函式物件
定義 stl原始碼剖析 仿函式其實上就是乙個 行為類似函式 的物件。即主體是物件,只是使用起來像乙個函式。傳遞函式指標 templatebool compare to const t x,const t y templatevoid print compare t fun int main 傳遞的是...
STL 仿函式(函式物件)
定義 一種具有函式特徵的物件,呼叫者可以像函式一樣使用該物件,為了能夠 行為類似函式 該物件所在類必須自定義函式呼叫運算子operator 就可以在仿函式物件後面加上一對小括號,以此呼叫仿函式定義的operator 操作。class mul2 class mul3 intmain for each ...
STL 函式物件(仿函式)概述
在stl提供的各種演算法中往往提供兩個版本,而第二個版本中往往第三個引數,就是乙個函式物件,第乙個版本中預設採用operator 來排序。函式物件可以看成是一種 操作 排序時兩兩相鄰元素滿足使這種操作為真,當然我們可以設計乙個函式,然後傳遞函式指標,但是我們需要抽象介面,函式指標不能與介面卡搭配使用...