标准C++算法库
来源:互联网 发布:手机淘宝怎么看网址 编辑:程序博客网 时间:2024/05/16 06:34
算法简介
标准库定义了 100多个算法,要学习如何使用它们,需要理解它们的结构,而不是记住每个算法的细节
( 1)查找对象的算法:
find(beg,end,val)
count(beg,end,val)
find_if(beg,end,unaryPred)
count_if(beg,end,unaryPred)
find_first_of(beg1,end1,beg2,end2)
find_first_of(beg1,end1,beg2,end2,binaryPred)
find_end(beg1,end1,beg2,end2)
find_end(beg1,end1,beg2,end2,binaryPred)
adjacent_find(beg,end)
adjacent_find(beg,end,binaryPred)
search(beg1,end1,beg2,end2)
search(beg1,end1,beg2,end2,binaryPred)
search_n(beg,end,count,val)
search_n(beg,end,count,val,binaryPred)
( 2)其他只读算法:
for_each(beg,end,f)
mismatch(beg1,end1,beg2)
mismatch(beg1,end1,beg2,binaryPred)
equal(beg1,end1,beg2)
equal(beg1,end1,beg2,binaryPred)
( 3)二分查找算法:
lower_bound(beg,end,val)
lower_bound(beg,end,val,comp)
upper_bound(beg,end,val)
upper_bound(beg,end,val,comp)
equal_range(beg,end,val)
equal_range(beg,end,val,comp)
binary_search(beg,end,val)
binary_search(beg,end,val,comp)
( 4)写容器元素的算法:
fill_n(dest,cnt,val)
generate_n(dest,cnt,Gen)
copy(beg,end,dest)
transform(beg,end,dest,unaryOp)
transform(beg,end,beg2,dest,binaryOp)
replace_copy(beg,end,dest,old_val,new_val)
replace_copy_if(beg,and,dest,unaryPred,new_val)
merge(beg1,end1,beg2,end2,dest)
merge(beg1,end1,beg2,end2,dest,comp)
swap(elem1,elem2)
iter_swap(iter1,iter2)
swap_ranges(beg1,end1,beg2)
fill(beg,end,val)
generate(beg,end,Gen)
replace(beg,end,old_val,new_val)
replace_if(beg,end,unaryPred,new_val)
copy_backward(beg,end,dest)
inplace_merge(beg,mid,end)
inplace_merge(beg,mid,end,comp)
( 5)划分与排序算法:
stable_partition(beg,end,unaryPred)
partition(beg,end,unaryPred)
sort(beg,end)
stable_sort(beg,end)
sort(beg,end,comp)
stable_sort(beg,end,comp)
partial_sort(beg,mid,end)
partial_sort(beg,mid,end,comp)
partial_sort_copy(beg,end,destBeg,destEnd)
partial_sort_copy(beg,end,destBeg,destEnd,comp)
nth_element(beg,nth,end)
nth_element(beg,nth,end,comp)
( 6)通用重新排序算法:
remove(beg,end,val)
remove_if(beg,end,unaryPred)
unique(beg,end)
unique(beg,end,binaryPred)
rotate(beg,mid,end)
reverse(beg,end)
reverse_copy(beg,end,dest)
remove_copy(beg,end,dest,val)
remove_copy_if(beg,end,dest,unaryPred)
unique_copy(beg,end,dest)
unique_copy(beg,end,dest,binaryPred)
rotate_copy(beg,mid,end,dest)
random_shuffle(beg,end)
random_shuffle(beg,end,rand)
( 7)排列算法:
next_permutation(beg,end)
next_permutation(beg,end,comp)
prev_permutation(beg,end)
prev_permutation(beg,end,comp)
( 8)有序序列的集合算法:
includes(beg,end,beg2,end2)
includes(beg,end,beg2,end2,comp)
set_union(beg,end,beg2,end2,dest)
set_union(beg,end,beg2,end2,dest,comp)
set_intersection(beg,end,beg2,end2,dest)
set_intersection(beg,end,beg2,end2,dest,comp)
set_difference(beg,end,beg2,end2,dest)
set_difference(beg,end,beg2,end2,dest,comp)
set_symmetric_difference(beg,end,beg2,end2,dest)
set_symmetric_difference(beg,end,beg2,end2,dest,comp)
(8)最大值和最小值算法:
min(va1,va2)
min(val1,val2,comp)
max(val1,val2)
max(val1,val2,comp)
min_element(beg,end)
min_element(beg,end,comp)
max_element(beg,end)
max_element(beg,end,comp)
lexicographical_compare(beg1,end1,beg2,end2)
lexicographical_compare(beg1,end1,beg2,end2,comp)
( 10)算术算法:在 中
accumulate(beg,end,init)
accumulate(beg,end,init,BinaryOp)
inner_product(beg1,end1,beg2,init)
inner_product(beg1,end1,beg2,init,BinOp1,BinOp2)
partial_sum(beg,end,dest)
partial_sum(beg,end,dest,BinaryOp)
adjacent_difference(beg,end,dest)
adjacent_difference(beg,end,dest,BinaryOp)
总结:
查找对象的算法、其他只读算法、二分查找算法、写容器元素的算法、划分与排序算法、通用重新排序算法、排列算法、有序序列的集合算法、最大值和最小值算法、算术算法
再谈 IO 库
iostream中定义的操纵符: boolalpha,noboolalpha,showbase,noshowbase,showpoint,noshowpoint,showpos,noshowpos,uppercase,nouppercase,dec,hex,oct,left,right,internal,fixed,scientific,flush,ends,endl,unitbuf,nounitbuf,skipws,noskipws,ws
iomanip中定义的操纵符: setfill(ch),setprecision(n),setw(w),setbase(b)
改变流格式状态的操纵符通常为后续 IO保留改变后的格式状态
取消操纵符的任何状态改变通常是最好的。一般而言,流应该在每个 IO操作之后处于通常的默认状态
用 flags操作恢复格式状态: flags()返回流的当前格式状态,返回值是名为 fmtflags的标准库类型。 flags(arg)将流格式置为指定格式
控制输出格式:有两大类,控制数值的表示,控制填充符的数量和布局
单字节低级 IO操作: is.get(ch),os.put(ch),is.get(),is.putback(ch),is.unget(),is.peek()
文件结束符: EOF,在 中定义
多字节操作: is.get(sink,size,delim),is.getline(sink,size,delim),is.read(sink,size),is.gcount(),os.write(source,size),is.ignore(size,delim)
流的随机访问:函数 seekg,tellg,seekp,tellp。
普通 iostream对象一般不允许随机访问
在大多数系统上,绑定到 cin,cout,cerr和 clog的流不支持随机访问。随机访问特性常用于 fstream和 sstream。
如何看算法库的源代码:
首先你要知道这个函数是在哪个头文件里边的,然后可以到整个程序的安装文件夹里边找,找到相应的就可以看了。或者你在程序里使用一下,故意用错,然后就有可能看到头文件里面这个函数的代码了,不过这个方法只是随机出现,不太清楚为什么会这样。
- c标准库源代码之 随机数产生算法
- libcstl:标准C语言通用数据结构和常用算法库
- [C/C++标准库]_[初级]_[标准库里提供的排序算法]
- C标准库“圣经”:C标准库
- C++标准库算法
- 标准C++算法库
- C++标准库算法
- 标准库算法学习
- C语言实现标准PSO算法
- 006_标准C与算法入门
- C语言实现标准PSO算法
- 标准c++ 库
- C标准库[转]
- C标准库
- (不错)C标准库
- C标准库
- C语言标准库
- C标准库“圣经”
- 小根堆的实现
- 函数参数列表的声明
- java 中的sychronized的详解
- [各种面试题] 二叉树旋转查询
- XMPP服务器性能比较
- 标准C++算法库
- SSH原理与运用(一):远程登录
- java学习和Android学习
- 编写JavaBean组件
- 【纠错】关于变量定义和声明的区别
- 小明系列故事——师兄帮帮忙
- 上网原理大透析(MAC,IP,掩码,DNS)
- 根据class查找jar源码样例
- paip.gch预编译头不生效的原因以及解决: