C++标准库算法
来源:互联网 发布:淘宝佣金软件 编辑:程序博客网 时间:2024/06/05 08:20
在遵循“不重复制造轮子”的原则下,对于一些基本算法,要尽可能地使用标准库提供的函数(在<algorithm>中定义),一是节省时间,二是标准实现在算法性能上有保证。我在此简要回顾一下标准库中都提供了哪些常见的算法。
(1) 基本数学相关:
max(t1, t2)和min(t1, t2), 返回t1和t2中的较大、较小者。
max_element(b, e)和min_element(b, e), 返回两个迭代器所指定容器的最大、最小者。
accumulate(b, e, t, f[,f]), 对b与e之间的每个迭代器,进行f运算并赋值给t。
(2)比较:
equal(b, e, b2, [,p]), 返回一个布尔值,判断两个序列中的元素是否相等。
lexicographical_compare(b, e, b2, e2, [,p]), 返回一个布尔值,进行两个序列的比较,默认使用<关系符。
(3)copy与remove相关:
copy(b, e, d), 将由输出迭代器b和e界定的序列中的值复制到由迭代器d指定的目标容器中,返回一个值指向目标容器末后面的元素。
remove(b, e, t)和remove_if(b, e, p), 排列容器以使得在[b, e)中使谓词p为真或等于值t的元素位于这个域的尾部,返回一个迭代器,该迭代器指示了位于不被“删除”的元素之后的那个位置。可以与erase函数配合使用,如students.erase(remove_if(students.begin(), students.end(), fail_grade), students.end())得到及格的学生向量。
remove_copy(b, e, d, t) 和remove_copy(b, e, d, p), 与remove类似,不同的是,不改变[b,e), 将使谓词p为真或等关于值t的元素复制到由迭代器d指定的目标容器中。
replace(b, e, t1, t2)和replace_copy(b, e, d, t1, t2), 将容器[b, e)中的所有等于t1的元素替换为t2, replace_copy不改变源容器,将替换后的序列复制到目标容器并返回end()。
reverse(b, e)和reverse_copy(b, e, d), 将容器[b, e)中的所有元素倒序排列, reverse_copy不改变源容器,将替换后的序列复制到目标容器并返回end()。
unique(b, e)和unique_copy(b, e, d), 将容器[b, e)中的所有重复元素去除, unique_copy不改变源容器,将替换后的序列复制到目标容器并返回end()。
(4)查找与排序:
binary_search(b, e, t), 返回一个布尔值,表示值t是否在容器[b,e)中。
find(b, e, t)和find_if(b, e, p), 返回一个迭代器,指向一个序列中首次出现t值或满足p表达式的元素。
search(b, e, b2, e2, [,p]), 在[b,e)容器中查找子序列[b2,e2),返回第一个匹配的子序列首元素的正向迭代器。
sort(b, e, [,p])和stable_sort(b, e, [,p]),对容器[b, e)中的元素进行排序,stable_sort是稳定排序,对相等的各元素保持原来的顺序。
(5)其他:
fill(b, e, t), 将由迭代器b,e界定的容器填充值t,返回void类型。
partition(b, e, p)和stable_partition(b, e, p), 将容器[b, e)分为两部分,使谓词p为真的元素在前,返回第一个不满足谓词p的元素的迭代器。stable_partition使两部分的元素保持原来在容器中的先后顺序。
transform(b, e, [,b2], d, f]), f函数以b和e界定的序列和以b2指向的等长序列为参数,生成的结果序列储存到由输出迭代器d指定的目标容器中。
- c标准库源代码之 随机数产生算法
- libcstl:标准C语言通用数据结构和常用算法库
- [C/C++标准库]_[初级]_[标准库里提供的排序算法]
- C标准库“圣经”:C标准库
- C++标准库算法
- 标准C++算法库
- C++标准库算法
- 标准库算法学习
- C语言实现标准PSO算法
- 006_标准C与算法入门
- C语言实现标准PSO算法
- 标准c++ 库
- C标准库[转]
- C标准库
- (不错)C标准库
- C标准库
- C语言标准库
- C标准库“圣经”
- 分别用docker和物理机器部署redis+sentinel
- [并发并行]_[线程池]_[Programming With POSIX Threads的线程池实现分析1]
- VMwareWorkstation10 中安装Centos6.5(64位)图文并茂详细步骤
- MySql连接超时问题解决
- mybatis连接mysql 时间格式化显示页面
- C++标准库算法
- lucidshape1.3-海拉之光 光学设计仿真分析
- 10. Regular Expression Matching
- django1.10 静态文件配置
- MHA文档翻译about部分
- 解决MyEclipse编写properties文件时,中文注释显示为Unicode码问题
- 如何用css3中的@media标签开发响应式布局界面
- nginx location配置小结
- NOIP2016提高组 DAY1