函式物件概念
1、過載函式呼叫操作符的類,其物件稱為函式物件
2、函式物件使用過載的()時,行為類似與函式呼叫,也叫仿函式
本質
函式物件(仿函式)是乙個類,不是乙個函式
函式物件的使用
特點1、函式物件在使用時,可以向普通函式那樣呼叫,可以有引數,可以有返回值
2、函式物件超出普通函式的概念,函式物件可以有自己的狀態
3、函式物件可以作為引數傳遞
#includeusing namespace std;
//1、函式物件在使用時,可以向普通函式那樣呼叫,可以有引數,可以有返回值
class myadd
};void test01()
//2、函式物件超出普通函式的概念,函式物件可以有自己的狀態
class myprint
void operator()(string test)
int count; //內部自己的狀態
};void test02()
//3、函式物件可以作為引數傳遞
void doprint(myprint& myprint, string test)
void test03()
int main()
概念
1、返回bool型別的仿函式稱為謂詞
2、如果operator()接受乙個引數,那麼就叫一元謂詞
3、如果operator()接受兩個引數,那麼就叫二元謂詞
一元謂詞
class greaterfive
else
}};void test01()
//查詢容器中,有沒有大於5的數字
//greaterfive()匿名函式物件
vector::iterator it = find_if(v.begin(), v.end(), greaterfive());
if (it == v.end())
else
for (; it < v.end(); it++)
cout << endl;
}
二元謂詞
class mycompare
};void test01()
cout << endl;
//使用函式物件,改變演算法策略,變為排序規則為從大到小
sort(v.begin(), v.end(), mycompare());
for (vector::iterator it = v.begin(); it != v.end(); it++)
cout << endl;
}
算數仿函式(函式物件)
stl內建了一些函式物件
算術仿函式:實現四則運算,其中negate是一元運算,其他都是二元運算
仿函式原型
//template t plus //加法仿函式
//template t minus //減法仿函式
//template t multiplies //乘法仿函式
//template t divides //除法仿函式
//template t modulus //取模仿函式
//template t negate //取反仿函式
用法
//這些仿函式所產生的物件,用法和一般函式完全相同
//使用內建函式物件,需要引入標頭檔案#include
void test01()
void test02()
實現邏輯運算
函式原型
//template bool logical_and 與
//template bool logical_or 或
//template bool logical_not 非
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;
}
實現關係對比
函式原型
//template bool equal_to //相等
//template bool not_equal_to //不相等
//template bool greater //大於
//template bool greater_equal //大於等於
//template bool less //小於
//template bool less_equal //小於等於
void test01()
cout << endl;
//降序
//方法一
//sort(v.begin(), v.end(), mycompare());
//for (vector::iterator it = v.begin(); it != v.end(); it++)
// //cout << endl;
//方法二
sort(v.begin(), v.end(),greater());//原理就是方法一
for (vector::iterator it = v.begin(); it != v.end(); it++)
cout << endl;
}
c 函式物件之謂詞
概念 返回bool型別的仿函式被稱為謂詞 如果operator 接受乙個引數,那麼就叫一元謂詞 如果operator 接受兩個引數,那麼就叫二元謂詞 一 一元謂詞 includeusing namespace std include include 仿函式 返回值型別是bool資料型別,稱為謂詞 一...
c 提高程式設計 4 2謂詞 4 3內建函式物件
4.2.1謂詞概念 概念 返回bool型別的仿函式稱為謂詞 如果operator 接受乙個引數,那麼叫做一元謂詞 如果operator 接受二個引數,那麼叫做二元謂詞 4.3.1內疚函式物件意義 概念 stl內建了一些函式物件 分類 算術仿函式 邏輯仿函式 關係仿函式 用法 這些仿函式所產生的物件,...
C 模板學習之函式物件之謂詞
函式物件是用物件來表示的函式 可以執行operator 的物件都叫做函式物件。謂詞是那些返回bool,operator 操作的函式物件。考慮如何對乙個序列求和 函式物件的優勢在於可以將引數,返回值存在物件裡面 而函式則不能。比如說 簡單的求序列中和的函式 template class sum sum...