STL常用算法汇总(更新…

导读:本篇文章讲解 STL常用算法汇总(更新…,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

使用STL算法需要包含头文件#include<algorithm>,
使用算术算法还需要包含数字头文件#include<numeric>.

查找与统计
find(beg,end,v) 在迭代器区间内查找等于V的元素,找到返回对应的迭代器,否则返回end
find_first_of(beg,end,beg2,end2) 在迭代区间[beg,end)内查找与区间[beg2,end2)内任意元素匹配的元素,然后返回一个迭代器,指向第一个匹配的元素。如果找不到元素,则返回第一个范围的end迭代器
find_end(beg,end,beg2,end2) 与find_first_of类似,区别是查找最后一个匹配的元素
find_if(beg,end,func) 与find功能相同,条件:使函数func返回true
search(brg,end,beg2,end) 在迭代区间[beg,end)内查找子序列[beg2,end2)
search_n(beg,end,n,v) 在迭代区间[beg,end)内查找连续n个元素v
lower_bound(beg,end,v) 查找非递减序列内第一个大于v的元素
upper_bound(beg,end,v) 查找非递减序列内第一个小于v的元素
mismatch(beg,end,beg2,end2) 查找两个序列中第一个不匹配的元素,返回一对iterator,标记第一个不匹配元匹配元素的位置
count(beg,end,v) 统计等于v的元素个数
count_if(beg,end,func) 函数count的_if版本,满足func的元素的个数
复制元素
copy(beg,end,beg2) 将迭代区间[beg,end)元素复制到以beg2开始的区间
transform(beg,end,beg2,func) 功能同copy,每个元素经过函数func处理后复制到beg2开始的区间
替换、填充元素
replace(beg,end,v1,v2) 区间内等于v1的元素都替换为v2
replace_if(beg,end,func,v2) replace的_if版本
fill(beg,end,v) 区间元素内都写入v
fill_n(beg,n,v) 从位置beg开始的n个元素写入v
replace_copy(beg,end,dest,v1,v2)
replace_copy_if(beg,end,dest,func,v2)
generate(beg,n,rand) 从beg开始的n个位置随机填写数据
移除元素
remove(beg,end) 移除区间[beg,end)内的元素,不是真正的删除
unique(beg,end) 剔除相邻重复的元素,不是真正的删除
remove_copy(beg,end,dest) remove的copy版本,将反转后的序列输出到dest开始的区间
remove_copy_if(beg,end,dest,func)
排序
sort(beg,end) 区间[beg,end)内元素按字典次序排列
stable_sort(beg,end,func) 同上,不过保存相等元素之间的顺序关系
partial_sort(beg,mid,end) 对区间[beg,end]内的mid-beg个元素进行排序,将最小的mid-beg个元素有序放在序列的前mid-beg的位置上
random_shuffle(beg,mid) 区间内元素随机排序
reverse(beg,end) 将区间内元素反转
rotate(beg,mid,end) 将区间内[beg,mid)和[mid,end)旋转,使mid成为新的起点
merge(beg,end,beg2,end2,nbeg) 将有序区间[beg,end)和[beg2,end2)合并到一个新的序列nbeg中,并对其排序
比较
equal(beg,end,beg2,end2) 判断两个区间的元素是否相等
includes(beg,end,beg2,end2) 判断[beg,end)序列是否被第二个序列[beg2,end2)包含
max_element(beg,end) 返回序列中最大元素的位置
min_element(beg,end) 返回序列中最小元素的位置
mismatch(beg,end,beg2,end2) 查找两个序列中第一个不匹配的元素,返回一对iterator,标记第一个不匹配元素的位置

标准库为list容器定义了更精细的操作集合,使它不必只依赖于泛型操作。

lst.merge(lst2)

lst.merge(lst2,comp)

将lst2的元素合并到lst中。这两个list的容器对象都必须排序。lst2中的元素将被删除,合并后,lst2为空分别使用<操作符和comp函数比较
lst.remove(val) 调用lst.erase删除所有等于指定值的元素
lst.reverse() 反向排列lst中的元素
lst.sort() 对lst中的元素排列
lst.splice(iter,lst2) 将lst2的元素移到lst中迭代器iter指向的元素前面;合并后lst2为空,不能是同一个list
lst.splice(iter,lst2,iter2) 将lst2中iter2所指向的元素移到lst的iter前面,可以是同一个list
lst.splice(iter,beg,end) 将[beg,end)内元素移动到iter前面,如果iter也指向这个区间,则不作任何处理

lst.unique()

lst.unique(func)

调用erase删除同一个值的副本,分别用==操作符和函数func比较

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/46142.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!