原始碼閱讀和追蹤
必須過載()運算子
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 ...