STL- 算法(2) 常用排序、替换算法
常用排序算法
merge 算法
容器元素合并,并存储到另一个容器中,这两个容器必须也是有序的
目标容器必须resize()!!
merge(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator target_beg)
@param beg1 开始迭代器1
@param end1 结束迭代器1
@param beg2 开始迭代器2
@param end2 结束迭代器2
@param target 目标容器起始迭代器
sort 算法
这个算法不知道干嘛的回去背英语吧
sort(iterator beg,iterator end)
sort(iterator beg,iterator end,_callback)
@param beg 开始迭代器
@param end 结束迭代器
@param _callback 回调函数或者谓词(返回类型bool的函数对象)
random_shuffle 洗牌算法
就是重新给数组随机排序
如果没有使用srand((unsigned int)time(NULL)),每一次运行结束后的结果都是一样的
random_shuffle (iterator beg,iterator end)
@param beg 开始迭代器
@param end 结束迭代器
代码示例
/*************************************************************************
> File Name: main.cpp
> Author:
> Mail:
> Created Time: 2020年01月01日 星期三 13时51分56秒
************************************************************************/
# include<iostream>
# include <algorithm>
# include <time.h>
# include <vector>
using namespace std;
void test01()
{
vector<int>v;
for(int i=0;i<10;i++)
{
v.push_back(i);
}
srand((unsigned int)(time(NULL))); //没有这个的话每一次重新运行生成的随即数组都是一样的
random_shuffle(v.begin(),v.end());
for_each(v.begin(),v.end(),[](int val){cout<<val<<" ";});
}
int main()
{
test01();
return 0;
}
reverse 翻转算法
翻转数组顺序
reverse(iterator beg,iterator end)
@param beg 开始迭代器
@param end 结束迭代器
常用拷贝替换算法
copy算法
将容器内指定范围的元素拷贝到另一容器中
目标容器必须resize()!!
copy(iterator beg,iterator end,iteartor target_beg)
@param beg 开始迭代器
@param end 结束迭代器
@param target_beg 目标开始迭代器
小技巧
# include <iterator>
copy(iterator beg,iterator end,ostream_iterator<T>) //打印数据 相当于把数据复制到输出流中进行输出
replace 算法
replace(iterator beg,iterator end,old_value,new_value)
replace_if(iterator beg,iterator end,_callback,value)
@param beg 开始迭代器
@param end 结束迭代器
@param old_value 旧值
@param new_value 新值
@_callback一元谓词
swap算法
交换两个容器内的元素
swap(c1,c2)
@param 容器1
@param 容器2
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment