C 一元謂詞和二元謂詞

2021-10-23 20:19:43 字數 2326 閱讀 4116

#include

#include

//演算法標頭檔案

#include

#include

using

namespace std;

// 返回型別為bool型別 的operator()

struct greatstruct};

// for_each需要使用的偽函式

template

<

typename t>

void

printer

(const t &val)

void

text()

// 返回型別為乙個迭代器

auto it =

find_if

(lst.

begin()

, lst.

end(),

greatstruct()

);if(it == lst.

end())

else

}int

main

(int argc,

char

**ar**)

```cpp

/* * @author: stylle

* @date: 2020-08-26 10:26:09

* @lasteditors: stylle

* @lastedittime: 2020-08-26 10:57:28

* @filepath: \learing-master\一元謂詞和二元謂詞.cpp

*/#include

#include

//演算法標頭檔案

#include

#include

using

namespace std;

// 返回型別為bool型別 的operator()

struct greatstruct};

class

greatclass};

// for_each需要使用的偽函式

template

<

typename t>

void

printer

(const t &val)

void

text()

// 返回型別為乙個迭代器

auto it =

find_if

(lst.

begin()

, lst.

end(),

greatstruct()

);if(it == lst.

end())

else

// 二元謂詞 list不支援隨機訪問所以不能使用sort訪問這裡改用vector容器

vector<

int> v;

v.push_back(10

);v.

push_back(5

);v.

push_back(13

);v.

push_back(8

);v.

push_back(2

);// 預設策略為從小到大排序

sort

(v.begin()

, v.

end())

;for_each

(v.begin()

, v.

end(

), printer<

int>);

cout << endl;

// 修改sort排序策略為從大到小 (匿名函式物件)

sort

(v.begin()

, v.

end(),

greatclass()

);for_each

(v.begin()

, v.

end(

), printer<

int>);

cout << endl;

}int

main

(int argc,

char

**ar**)

一元謂詞和二元謂詞的區別以及謂詞的作用

區別:接受1個引數的謂語是一元,兩個是二元.

作用:謂語是返回bool値的通常作為演算法的判斷條件的輔助函式,並且謂語對於某個數永遠返回一樣的値.也就是謂語函式pre(),不能現在接受引數a返回true,等下返回false.

所以本身有狀態並且影響返回結果的輔助函式都不能叫做謂語.比如有static變數作為狀態的函式和有內部引數的函式物件.

來自:「the c++ standard library」

函式物件,一元謂詞,二元謂詞,預定義函式物件

find if sort for each 的使用 for each v1.begin v1.end showelemt 要使用預定義函式物件需要包含 functional 標頭檔案vector iterator it find if v1.begin v1.end myint sort v3.be...

C 中二元函式物件和二元謂詞

在c stl演算法中,在演算法的輸入和輸出中,一定要分清是函式物件,還是謂詞,還是迭代器。具體看如下 注意看注釋 includeusing namespace std include string include include include include include 二元函式物件 temp...

find if一元謂詞

find if接受一元謂詞,因此傳遞給find if的可呼叫物件必須接受單一引數。舉個例子 vector vec auto wc find if vec.begin vec.end sz const string words 當中的lambda表示式 sz const string words 轉化...