C 11 C 中常用函式物件

2021-10-25 09:17:29 字數 2850 閱讀 5975

原始碼閱讀和追蹤

必須過載()運算子

class equal

bool operator()(const int& number)

};

c/c++ 提供了很多定義好的函式物件,常見的幾個less,greater,plus,equal_to,這些都是二元函式

bind1st和bind2nd是將二元函式轉換為一元函式,比如乙個比較大小的函式是二元函式。當在某些情況下我們想要固定第乙個引數或者第二個引數時,就成了一元函式

int main()

}

class equal

bool operator()(const int& number)

};// count_if

int main()

列印結果:

count = 3

count = 3

void print(int number)

// 進行修改

int transform_print(int number)

int main()

列印結果:

456

7

vectorvector1;

vector1.push_back(1);

vector1.push_back(2);

vector1.push_back(3);

vector1.push_back(4);

vector::iterator find_it = find(vector1.begin(),vector1.end(),2);

if(find_it!=vector1.end())else

// 有沒有大於2的,自定義函式物件,預定義函式物件+函式介面卡,省略

vector::iterator find_it1 = find_if(vector1.begin(),vector1.end(),bind2nd(less(),4));

while(find_it1!=vector1.end())

cout << *find_it1 << endl;

find_it1++;

}

列印結果:

包含13

2

vectorvector1;

vector1.push_back(1);

vector1.push_back(2);

vector1.push_back(3);

vector1.push_back(2);

vector1.push_back(4);

int number = count(vector1.begin(),vector1.end(),2);

cout << "等於2的個數:" << number << endl;

number = count_if(vector1.begin(),vector1.end(),bind2nd(less(),2));

cout << "小於2的個數:" << number << endl;

number = count_if(vector1.begin(),vector1.end(),bind2nd(greater(),2));

cout << "大於2的個數:" << number << endl;

列印結果:

等於2的個數:2

小於2的個數:1

大於2的個數:2

class _merge

};void print(int number)

// merge

int main()

列印結果:

123

456

vectorvector1;

vector1.push_back(1);

vector1.push_back(3);

vector1.push_back(2);

vector1.push_back(4);

sort(vector1.begin(),vector1.end(),less());

for_each(vector1.begin(),vector1.end(),print);

// 打亂順序

random_shuffle(vector1.begin(),vector1.end());

for_each(vector1.begin(),vector1.end(),print);

vectorvector1;

vector1.push_back(1);

vector1.push_back(2);

vector1.push_back(3);

vector1.push_back(4);

vectorvector2(2);

copy(vector1.begin(),vector1.begin()+2,vector2.begin());

// for_each(vector2.begin(),vector2.end(),print);

replace(vector1.begin(),vector1.end(),2,22);

for_each(vector1.begin(),vector1.end(),print);

C 中常用數學函式

include using abs 絕對值 using acos 反余弦 using acosf 反余弦 using acosl 反余弦 using asin 反正弦 using asinf 反正弦 using asinl 反正弦 using atan 反正切 using atan2 y x的反正切...

C 中常用函式記錄

發現很多常見功能都已經封裝實現 每次卻還自己吭吭的寫,費力不討好。故在此記錄。函式名 功能描述 sort 對給定區間所有元素進行排序 stable sort 對給定區間所有元素進行穩定排序 partial sort 對給定區間所有元素部分排序 partial sort copy 對給定區間複製並排序...

C 中常用函式copy from

目錄 函式定義 int open const char pathname,int flags int open const char pathname,int flags,mode t mode 引數說明 pathname 檔案的名稱,可以包含 絕對和相對 路徑 flags 檔案開啟模式 mode ...