STL排序、拷贝和替换算法
作者:小教学发布时间:2023-10-03分类:程序开发学习浏览:76
目录
常用排序算法sort
常用排序算法random_shuffle
常用排序算法merge
常用排序算法reverse
常用拷贝和替换算法copy
常用拷贝和替换算法replace
常用拷贝和替换算法replace_if
常用拷贝和替换算法swap
常用排序算法sort
sort(iterator begp iterator end,_Pred);
// 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置
// beg开始选代器
//end结束选代器
//_Pred 谓词
#include <iostream>
#include <string.h>
#include <iterator>
#include <vector>
#include <string>
#include <algorithm>
#include <deque>
#include <bitset>
#include <ctime>
#include <stack>
#include <queue>
#include <list>
#include <set>
#include <map>
#include<functional>
using namespace std;
void myprint(int t)
{
cout << t << " ";
}
void test01()
{
vector<int>v;
v.push_back(20);
v.push_back(70);
v.push_back(60);
v.push_back(50);
v.push_back(90);
v.push_back(10);
sort(v.begin(),v.end());//默认升序
for_each(v.begin(),v.end(),myprint);
cout << endl;
sort(v.begin(),v.end(),greater<int>());//降序
for_each(v.begin(),v.end(),myprint);
cout << endl;
}
int main()
{
test01();
return 0;
}
常用排序算法random_shuffle
random_shuffle(iterator beg, iterator end);
//指定范围内的元素随机调整次序
// beg开始选代器
//end结束迭代器
#include <iostream>
#include <string.h>
#include <iterator>
#include <vector>
#include <string>
#include <algorithm>
#include <deque>
#include <bitset>
#include <ctime>
#include <stack>
#include <queue>
#include <list>
#include <set>
#include <map>
#include<functional>
using namespace std;
void myprint(int t)
{
cout << t << " ";
}
void test01()
{
vector<int>v;
for(int i =0;i<10;i++)
{
v.push_back(i);
}
random_shuffle(v.begin(),v.end());
for_each(v.begin(),v.end(),myprint);
cout << endl;
}
int main()
{
test01();
return 0;
}
编译运行
常用排序算法merge
merge(iterator begl, iterator end1, iterator beg2, iterator end2, iterator dest);// 容器元素合并,并存储到另一容器中
/注意:两个容器必须是有序的
// beg1容器1开始迭代器
//end1 容器1结束选代器
//beg2容器2开始选代器
// end2容器2结束迭代器
// dest目标容器开始迭代器
#include <iostream>
#include <string.h>
#include <iterator>
#include <vector>
#include <string>
#include <algorithm>
#include <deque>
#include <bitset>
#include <ctime>
#include <stack>
#include <queue>
#include <list>
#include <set>
#include <map>
#include<functional>
using namespace std;
void myprint(int t)
{
cout << t << " ";
}
void test01()
{
vector<int>v;
vector<int>v2;
for(int i =0;i<10;i++)
{
v.push_back(i);
v2.pish_back(i+1);
}
vector<int>v3;
//开辟空间
v3.resize(v2.size()+v.size());
merge(v.begin(),v.end(),v2.begin(),v2.end(),v3.begin());
//0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10
for_each(v3.begin(),v3.end(),myprint);
cout << endl;
}
int main()
{
test01();
return 0;
}
常用排序算法reverse
reverse(iterator beg, iterator end);
// 反转指定范围的元素
// beg开始选代器
// end结束选代器
#include <iostream>
#include <string.h>
#include <iterator>
#include <vector>
#include <string>
#include <algorithm>
#include <deque>
#include <bitset>
#include <ctime>
#include <stack>
#include <queue>
#include <list>
#include <set>
#include <map>
#include<functional>
using namespace std;
void myprint(int t)
{
cout << t << " ";
}
void test01()
{
vector<int>v;
for(int i =0;i<10;i++)
{
v.push_back(i);
}
cout << "反转前:" << endl;
for_each(v.begin(),v.end(),myprint);
cout << endl;
reverse(v.begin(),v.end());
cout << "反转后:" << endl;
for_each(v.begin(),v.end(),myprint);
cout << endl;
}
int main()
{
test01();
return 0;
}
编译运行
常用拷贝和替换算法copy
copy(iterator beg, iterator end, iterator dest);
// beg开始选代器
//end 结束选代器
//dest目标起始选代器
#include <iostream>
#include <string.h>
#include <iterator>
#include <vector>
#include <string>
#include <algorithm>
#include <deque>
#include <bitset>
#include <ctime>
#include <stack>
#include <queue>
#include <list>
#include <set>
#include <map>
#include<functional>
using namespace std;
void myprint(int t)
{
cout << t << " ";
}
void test01()
{
vector<int>v;
for(int i =0;i<10;i++)
{
v.push_back(i);
}
vector<int>v2;
//给目标容器开辟空间
v2.resize(v.size());
copy(v.begin(),v.end(),v2.begin());
//0 1 2 3 4 5 6 7 8 9
for_each(v2.begin(),v2.end(),myprint);
cout << endl;
}
int main()
{
test01();
return 0;
}
常用拷贝和替换算法replace
replace(iterator beg,iterator end,oldvalue ,newvalue);
//将区间内旧元素督换成新元素
//beg开始选代器
//end结束选代器
// oldvalue 旧元素
//newvalue 新元素
#include <iostream>
#include <string.h>
#include <iterator>
#include <vector>
#include <string>
#include <algorithm>
#include <deque>
#include <bitset>
#include <ctime>
#include <stack>
#include <queue>
#include <list>
#include <set>
#include <map>
#include<functional>
using namespace std;
void myprint(int t)
{
cout << t << " ";
}
void test01()
{
vector<int>v;
for(int i =0;i<10;i++)
{
v.push_back(i);
}
replace(v.begin(),v.end(),2,3);
//0 1 3 3 4 5 6 7 8 9
for_each(v.begin(),v.end(),myprint);
cout << endl;
}
int main()
{
test01();
return 0;
}
常用拷贝和替换算法replace_if
replace if(iterator beg, iterator end,pred, newvalue);
// 按条件替换元素,满足条件的替换成指定元素
// beg开始选伦器
//end结束选代器
//_pred谓词
// newvalue 替换的新元素
#include <iostream>
#include <string.h>
#include <iterator>
#include <vector>
#include <string>
#include <algorithm>
#include <deque>
#include <bitset>
#include <ctime>
#include <stack>
#include <queue>
#include <list>
#include <set>
#include <map>
#include<functional>
using namespace std;
void myprint(int t)
{
cout << t << " ";
}
class predicate
{
public:
bool operator()(int val)
{
return val >= 5;
}
};
void test01()
{
vector<int>v;
for(int i =0;i<10;i++)
{
v.push_back(i);
}
//如果大于等于五 替换成四
replace_if(v.begin(),v.end(),predicate(),4);
//0 1 2 3 4 4 4 4 4 4
for_each(v.begin(),v.end(),myprint);
cout << endl;
}
int main()
{
test01();
return 0;
}
常用拷贝和替换算法swap
swap(container c1, container c2);
// 互换两个客器的元素
// c1容器1
// c2容器2
#include <iostream>
#include <string.h>
#include <iterator>
#include <vector>
#include <string>
#include <algorithm>
#include <deque>
#include <bitset>
#include <ctime>
#include <stack>
#include <queue>
#include <list>
#include <set>
#include <map>
#include<functional>
using namespace std;
void myprint(int t)
{
cout << t << " ";
}
void test01()
{
vector<int>v1;
vector<int>v2;
for(int i =0;i<10;i++)
{
v1.push_back(i);
v2.push_back(i+100);
}
cout << "互换前" << endl;
for_each(v1.begin(),v1.end(),myprint);
cout << endl;
for_each(v2.begin(),v2.end(),myprint);
cout << endl;
swap(v1,v2);
cout << "互换后" << endl;
for_each(v1.begin(),v1.end(),myprint);
cout << endl;
for_each(v2.begin(),v2.end(),myprint);
cout << endl;
}
int main()
{
test01();
return 0;
}
编译运行
- 程序开发学习排行
-
- 1鸿蒙HarmonyOS:Web组件网页白屏检测
- 2HTTPS协议是安全传输,为啥还要再加密?
- 3HarmonyOS鸿蒙应用开发——数据持久化Preferences
- 4记解决MaterialButton背景颜色与设置值不同
- 5鸿蒙HarmonyOS实战-ArkUI组件(RelativeContainer)
- 6鸿蒙HarmonyOS实战-ArkUI组件(Stack)
- 7鸿蒙HarmonyOS实战-ArkUI组件(GridRow/GridCol)
- 8[Android][NDK][Cmake]一文搞懂Android项目中的Cmake
- 9鸿蒙HarmonyOS实战-ArkUI组件(mediaquery)
- 最近发表
-
- WooCommerce最好的WordPress常用插件下载博客插件模块的相关产品
- 羊驼机器人最好的WordPress常用插件下载博客插件模块
- IP信息记录器最好的WordPress常用插件下载博客插件模块
- Linkly for WooCommerce最好的WordPress常用插件下载博客插件模块
- 元素聚合器Forms最好的WordPress常用插件下载博客插件模块
- Promaker Chat 最好的WordPress通用插件下载 博客插件模块
- 自动更新发布日期最好的WordPress常用插件下载博客插件模块
- WordPress官方最好的获取回复WordPress常用插件下载博客插件模块
- Img to rss最好的wordpress常用插件下载博客插件模块
- WPMozo为Elementor最好的WordPress常用插件下载博客插件模块添加精简版