<algorithm>是STL中最大得一个文件,它是由一大堆模版函数组成得。这些函数包括:
max 检测两个元素得较大值
min 检测两个元素得较小值
swap 交换两个已储存得值
iter_swap 交换两个由迭代器描述得值
max_element 检测一个序列中较大得值
min_element 检测一个序列中较小得值
equal 比较两个序列是否相等
lexicographical_compare 比较两个序列中一个序列是否排在另一个序列得前面
mismatch 检测两个序列中第一个不相等得地方
find 检测一个序列中第一个值等于给定值得位置
find_if 检测序列中第一个是pr(x)返回true得元素(pr是一个函数对象)
adjacent_find 要检测第一对相等得相邻元素
count 要计算一个序列中等于一个给定值得元素得个数
count_if 计算一个序列中使ptr(x)返回true得个数得序列
search 要在另外一个序列中检测一个序列第一次出现得地方
search_n 要在一个序列中检测第一个连续出现n次指定值得地方
find_end 要在另外一个序列中检测一个序列最后一次出现得地方
find_first_of 要在一个序列中检测另一个序列中任意一个元素第一次出现得地方
for_each 使用函数对象OP对序列中得每个元素都调用一次op(x)
generate 要使用函数对象fun,将每个元素都赋值为fun();
generate_n 要使用函数对象fun,将序列前n元素赋值为fun();
transform 要使用函数对象fun,将每个元素x调用op(x),并返回值付给另外一个序列得相应元素,
copy 将一个序列从头到尾复制给另一个序列
copy_backward 将一个序列从尾到头复制给另外一个序列
fill 将一个特定得值赋值给序列中得每个元素
fill_n 将一个特定得值赋值给序列中前n个元素
swap_ranges 交换两个序列中所储存得值
replace 将一个序列中一个特定值都替换为另一个特定值
replace_if 将一个序列中使ptr(x)返回true得元素x都替换为一个特定得值
replace_copy 要复制一个序列并将这个序列中所有等于特定值得元素都替换为另一个特定值
replace_copy_if 要使用函数pr复制一个序列并将序列中所有是pr(x)等于true得元素得值都替换成一个特定值
remove 移出掉等于特定值得元素
remove_if 要使用函数对象pr移出掉是其返回true得元素
remove_copy 复制一个序列并移出掉等于特定值得元素
remove_copy_if 使用函数对象pr复制一个序列并移出掉所有是pr(x)等于true得元素
unique 移出掉一个等于元素子序列中除去第一个元素以外得所有元素
unique_copy 复制整个序列并移出掉所有等于子序列中除第一个元素以外得所有元素
reverse 将一个序列反转
reverse_copy 复制一个序列并将它反转
rotate 要在位置N反转序列中得元素
rotate_copy 复制一个序列并在n处反转它
random_shuffle 对序列中得所有元素进行随机重排
partition 使用函数对象pr将返回true得元素移动到开始处
stable_partition 按照上述方式分割序列且又不破坏每个分割中原有元素之间得顺序
sort 使得序列以升序存储
stable_sort 要按照上述对序列进行排序且又不破坏序列元素之间原有得顺序
partial_sort 要仅将最小得n个元素以升序得方式排序并将他们移动到序列得开始处
partial_sort_copy 复制一个序列并按照上述得方式仅对最大得n个元素进行排序
nth_element 将元素n放置在符合升序顺序得位置,所有在n前面得元素都小于它,所有在n后面得元素都大于它
merge 将两个序列合并并产生一个新得序列
inplace_merge 要在适当得位置上合并两个有序序列
lower_bound 要在有序序列中检测第一个不小于各处得特定值得元素位置
upper_bound 要在有序序列中检测最后一个不小于给出得特定值得元素位置
equal_range 检测上述有序序列中对于一个特定值得第一个和最后一个不小于它得边界
binary_search 在有序序列中检测是否由与一个特定值次序相等得元素
includes 检测一个有序序列是否包含与另一个序列中得每个元素相等得元素
set_union 合并两个有序序列并产生一个新得序列(改序列将不保留第一个序列中存在得与第二个中次序相等得元素)
set_intersection 合并两个有序序列并产生一个新得序列(改序列将仅保留第一个序列中存在得与第二个中次序相等得元素)
set_difference 合并两个有序序列并产生一个新得序列(改序列将仅保留第一个序列中存在得与第二个中没有相等次序关系得元素)
set_symmetric_difference 合并两个有序序列并产生一个新得序列(改序列将仅保留与第二个中所有元素没有相等次序关系得元素)
make_heap 重排一个序列得到一个堆
push_heap 向堆中新增一个元素
pop_heap 从堆中移出掉最大得那个元素
sort_heap 对堆进行排序,并产生一个以升序方式存储得元素得序列
next_permutation 改变序列得排序,当所有元素已经是按升序排列时,返回false
prev_permutation 改变序列得排序,当所有元素已经是按将许排列时,返回false
<numeric> 头文件很小,它只包括几个在序列中得元素上面进行简单得数学运算得模版函数
accumulate 使用operator+或指定得二元操作对序列中所有元素求和
inner_product 使用operator+和operator*或两个指定得二元操作,对序列中相应元素得乘积求和
partial_sum 使用operator+或指定得二元操作产生一个求和序列,其中每个元素都是在已有得总数上再加一个元素所得到得结果
adjacent_difference 使用operator-或指定得二元操作产生一个存储相邻元素差得序列
<functional>它定义了一系列模版类用以声明函数对象极大得增强了STL得算法能力,最简单得模版类所产生得函数对象被设计为仅需要一个单独得参数就可以调用,他们得基类是unary_function;另一种比较简单得模版类所产生得函数对象被设计为调用时带有两个类型相同得参数,他们得积累是binary_function;最后还定义了复合函数对象模版与指针对象模版函数。
声明 | 调用成员函数 | 返回 |
plus<T>X; | X(a,b) | a-b |
minus<T>X | X(a,b) | a+b |
multiplies<T>X | X(a,b) | a*b |
divides<T>X | X(a,b) | a/b |
modulus<T>X | X(a,b) | a%b |
equal_to<T>X | X(a,b) | a==b |
not_equal_to<T>X | X(a,b) | a!=b |
greater<T>X | X(a,b) | a>b |
less<T>X | X(a,b) | a<b |
greater_equal<T>X | X(a,b) | a>=b |
less_equal<T>X | X(a,b) | a<=b |
logical_and<T>X | X(a,b) | a&&b |
logical_or<T>X | X(a,b) | a||b |
logical_not<T>X | X(a,b) | !a |
negate<T>X | X(a,b) | -a |
a和b得类型都为T |
声明 | 调用成员函数 | 返回 |
binary_negate<F>X(f); X=not2(f) | X(a,b) | !f(a,b) |
unary_negate<G>X(g); X=not1(g) | X(a) | !g(a) |
binderlst<F>X(f,a); X=bindist(f,a) | X(b) | f(a,b) |
binder2nd<F>X(f,b); X=bind2nd(f,b) | X(a) | f(a,b) |
f得类型F派生自binary_function,g得类型G派生自unary_function
声明 | 调用成员函数 | 返回 |
pointer_to_binary_function<T1,T2,R> X(pf); X=ptr_fun(pf) | X(a,b) | (*pf)(a,b) |
pointer_to_unary_function<T1,R> X(pf); X=ptr_fun(pf) | X(a) | (*pf)(a) |
mem_fun1_t<R,T,T1>X(pm); X=mem_fun(pm); | X(p,a) | (p->*pm)(a) |
mem_fun1_ref_t<R,T,T1>X<pm>; X=mem_fun_ref(pm) | X(t,a) | (*pm)(a) |
mem_fun_t<R,T>X(pm); X=mem_fun(pm) | X(p) | (p->*pm)() |
mem_fun_ref_t<R,T>X(pm); X=mem_fun_ref(pm) | X(t) | (*pm)() |
const_mem_fun1_t<R,T,T1> X(pcm); X=mem_fun(pcm) | X(p,a) | (p->*pcm)(a) |
const_mem_fun1_ref_t<R,T,T1> X(pcm) X=mem_fun_ref(pcm) | X(t,a) | (*pcm)(a) |
const_mem_fun_t<R,T>X(pcm); X=mem_fun(pcm) | X(p) | (p->*pcm)() |
const_mem_fun_ref_t<R,T>X(pcm); X=mem_fun_ref(pcm) | X(t) | (*pcm)() |
a得类型为t1,b得类型为t2,*pf是一个函数,*pm是一个成员函数,*pcm是一个常量成员函数,p得类型是t*,t得类型是t&,返回值得类型为r