參考了《c++stl 標準程式庫開發指南》
1. for_each
函式:for_each(iterator begin , iterator end , proc op)
說明:for_each 演算法實現對區間 [begin,end] 中的每個元素均呼叫程序op
例子:將陣列 a 和 vector b中的全部元素按順序列印出來。
#include
#include
#include
using
namespace std;
void
pprint
(int t)
intmain()
2.元素計數
函式:count(iterator begin,iterator end,const t& value)
count_if(iterator begin,iterator end,unarypredicate op)
說明:前者將統計在區間內等於valu的元素個數;後者統計在區間內只有op引數為真時,才統計元素個數,返回值為int。
例子:統計陣列中4的數量和偶數的數量。
#include
#include
#include
using
namespace std;
bool
is_even
(int t)
intmain()
;printf
("4的個數為\n");
printf
("%d"
,count
(a,a+7,
4));
printf
("\n偶數的個數為\n");
printf
("%d"
,count_if
(a,a+
7,is_even));
return0;
}
3.求最大值最小值(以最小值為例)
函式:iterator min_element(iterator begin,iterator end)
iterator min_element(iterator begin,iterator end,cmp op)
說明:前者預設以"operator<"來比較;後者用引數op來進行比較,返回的是迭代器指標型別。
例子:返回最大的元素和絕對值最大的元素。(注意distance的用法和解引用,distance求取兩個元素位置的差值,為int)
#include
#include
#include
#include
using
namespace std;
bool
cmp(
int a,
int b)
intmain()
; vector<
int> b;
vector<
int>
::iterator t;
for(
int i=
0;i<
8;i++
) b.
push_back
(a[i]);
printf
("陣列b中最大的元素是\n");
printf
("%d\n",*
max_element
(b.begin()
,b.end()
));printf
("陣列b中絕對值最大的元素及其位置是\n");
t=max_element
(b.begin()
,b.end()
,cmp)
;printf
("%d %d\n"
,*t,
distance
(b.begin()
,t)+1)
;return0;
}
4.搜尋元素
函式iterator find(iterator begin,iterator end,const t& value)
iterator find_if(iterator begin,iterator end,unarypredicate op)
說明:前者返回第乙個元素值為value的位置;後者返回滿足條件op的第乙個元素。
例子:搜尋值為4的元素和大於6的元素。(注意bind2nd 和greater()用法,需要functional庫)
#include
#include
#include
#include
using
namespace std;
intmain()
; vector<
int> b;
vector<
int>
::iterator t;
for(
int i=
0;i<
8;i++
) b.
push_back
(a[i]);
printf
("值為4的第乙個元素位置為\n");
printf
("%d\n"
,distance
(b.begin()
,find
(b.begin()
,b.end()
,4))
+1);
printf
("值大於6的第乙個元素位置為\n");
printf
("%d\n"
,distance
(b.begin()
,find_if
(b.begin()
,b.end()
,bind2nd
(greater<
int>()
,6))
)+1)
;return0;
}
5.互換元素
函式 :swap(t& a,t& b)
說明:略
6.排列
函式:next_permutation(a.begin(),a.end()) 公升序排列
prev_permutation(a.begin(),a.end()) 降序排列
說明:公升序排列時,原排列是小的字典序,如果是最大的字典序排雷,則不能重排元素,降序同。
例子:分別按公升序降序重排陣列。
#include
#include
#include
using
namespace std;
void
pprint
(char t)
intmain()
while
(next_permutation
(b.begin()
,b.end()
));printf
("按原序列降序排序過程\n");
dowhile
(prev_permutation
(c.begin()
,c.end()
));return0;
}
7.排序
函式:sort(a.begin(),a.end(),cmp)
說明:把元素按照cmp的規則進行排序,如果cmp預設,則為公升序排序。(支援結構體排序)
例子:把陣列從大到小排序。
#include
#include
#include
using
namespace std;
void
pprint
(int t)
bool
cmp(
int a,
int b)
intmain()
; vector<
int> b;
b.assign
(a,a+6)
;sort
(b.begin()
,b.end()
,cmp)
;printf
("按公升序排列後的陣列\n");
for_each
(b.begin()
,b.end()
,pprint)
;return0;
}
常用函式彙總
常用內建 作業系統相關 檔案正規表示式 enumerate goods list coffee 10 chicken 20 iphone 8000 macpro 15000 car 100000 for i,good in enumerate goods list print s s i,good ...
C 標準庫常用函式彙總
include指令 排序sort vec.begin vec.end 反轉reverse str.begin str.end include指令 定義了三個型別來支援 檔案io 從乙個給定檔案讀取資料 ifstream fin pose.txt 向乙個給定檔案寫入資料 ofstream 讀寫給定檔案...
C 演算法庫(algorithm)
演算法庫需要標頭檔案 include 返回函式 x 和 y 的最大值。include include using namespace std intmain 返回函式 x 和 y 的最小值。返回值為 x 的絕對值,必須為整數。如果是浮點數的絕對值使用 math.h 中的 fabs 交換 a,b 的值...