STL-常用算法
文章目录
- 算法主要由头文件 algorithm funaction numeric 组成
- algorithm是所有STL头文件中最大的一个,范围涉及比较,查找,交换,遍历操作,复制,修改等
- numeric 体积很小,只包括几个在序列上面进行简单数学运算的模板函数
- functional 定义了一些模板类,用以声明函数对象
常用遍历算法
- for_each //遍历容器
- transform //搬运容器到另一个容器中
for_each
-
for_each(iterator beg,iterator end,_func)
遍历算法,遍历容器元素
//_func 函数或者函数对象(仿函数)
transform
- transform(iterator beg1,iterator end1,iterator beg2,_func)
搬运容器到另一个容器
//beg1 源容器开始迭代器
//end1 原容器结束迭代器
//beg1目标容器开始迭代器
//_func 函数或者函数对象(仿函数)
常用的查找算法
- find //查找元素
- find_if //按条件查找
- adjacent_find //查找相邻重复元素
- binary_search //二分查找法
- count //统计元素个数
- count_if //按照条件统计元素个数
find
- find(iterator beg,iterator end,value)
按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器的位置
//value 查找的元素
find_if
- find_if(iterator beg,iterator end,_Pred)
按值查找元素,找到返回指定位置的迭代器,找不到返回结束迭代器位置
//_Pred 函数或者谓词
adjacent_find
- adjacent_find(iterator beg,iterator end)
查找相邻重复元素,返回相邻元素的第一个位置的迭代器
binary_search
- binary_search(iterator beg,iterator end,value)
查找指定元素,查到返回true 否则false
//注意:在无序序列中不可用
count
- count(iterator beg,iterator end,value)
统计元素出现次数
count_if
- count_if(iterator beg,iterator end,_Pred)
按条件统计元素出现次数
//_Pred 谓词
常用排序算法
- sort //对容器内元素进行排序
- random_shuffle //洗牌 指定范围内的元素随机进行调整
- merge //容器元素合并并储存到另一容器中
- reverse //反转指定的范围的元素
sort
- sort(iterator beg,iterator beg,iterator end,_Pred)
//_pred 谓词
random_shuffle
-
random_shuffle(iterator beg,iterator end);
指定范围内的元素随机调整次序
merge
- merge(iterator beg1,iterator end1,iterator beg2,iterator end2,iteraotor dest)
容器元素合并,并储存到另一个容器中
两个容器必须都是有序的
//beg1 容器1开始迭代器
//end1容器1结束迭代器
//beg2 容器1开始迭代器
//end2容器1结束迭代器
//dest 目标容器开始迭代器
reverse
- reverse(iterator beg , iterator end)
反转指定范围元素
常用的拷贝和替换算法
- copy //容器内指定范围的元素拷贝到另一容器
- replace //将容器内指定的范围的旧元素改为新元素
- replace_if //将容器内指定范围满足条件的旧元素改为新元素
- swap //互换两个容器的元素
copy
- copy(iterator beg,iterator end,iterator dest)
拷贝指定范围的元素到另一容器
//dest 目标容器的迭代器
//利用copy算法在拷贝时,目标容器记得提前开辟空间
replace
- replace(iterator beg,iterator end,oldvalue,newvalue)
将区间内旧元素,替换成新元素
//oldvalue 旧元素
//newvlaue 新元素
replace_if
- replace_if(iterator beg,iterator end,_Pred,newvalue)
按条件替换元素,满足条件的替换成指定元素
//_Pred 谓词
//newvlaue 替换的新元素
swap
- swap(container c1,container c2)
互换两个容器
//c1容器1
//c2容器2
常用算术生成算法
- accumulate //计算容器元素累计总和
- fill //向容器中添加元素
accumulate
- accumulate(iterator beg,iterator end,value)
计算容器中元素的总和
//value 累加的起始的值
fill
- fill(iterator beg,iterator end,value)
向容器中添加元素
//beg 开始迭代器
//end 结束迭代器
//value 填充的值