STL排序、拷贝和替换算法

news2024/11/27 9:37:32

目录

常用排序算法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;
}

编译运行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1042359.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

羧基荧光素-氨基.盐酸盐,FAM-NH2.HCl,138589-19-2

产品简介&#xff1a;5-FAM-NH2.HCl(羧基荧光素-氨基.盐酸盐)其中异硫氰酸荧光素(FITC)具有比较高的活性,通常来说,在固相合成过程中引 入该种荧光基团相对于其他荧光素要更容易,并且反应过程中不需要加入活化试剂。可以用来修饰蛋白质、多肽以及其他活性基团材料或者小分子。 …

【LeetCode热题100】--54.螺旋矩阵

54.螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 按层遍历 可以将矩阵看成若干层&#xff0c;首先输出最外层的元素&#xff0c;其次输出次外层的元素&#xff0c;直到输出最内层的元素。 对于每层&…

视频汇聚/安防监控平台EasyCVR指定到新的硬盘进行存储录像,如何自动挂载该磁盘?

TSINGSEE青犀视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力&…

在Pyppeteer中实现反爬虫策略和数据保护

爬虫是我们获取互联网数据的神奇工具&#xff0c;但是面对越来越严格的反爬虫措施&#xff0c;我们需要一些我们获取数据的利器来克服这些障碍。本文将带您一起探索如何使用Pyppeteer库来应对这些挑战。 Pyppeteer是一个基于Python的无头浏览器控制库&#xff0c;它提供了与Chr…

Godot信号教程(使用C#语言)| 创建自定义信号 | 发出自定义信号 | 使用代码监听信号

文章目录 信号是什么连接信号使用编辑器连接信号使用代码连接信号Lambda 自定义信号声明信号发射信号带参数的信号 其他文章 信号是什么 在Godot游戏引擎中&#xff0c;信号是一种用于对象之间通信的重要机制。它允许一个对象发出信号&#xff0c;而其他对象可以连接到这个信号…

K8S:pod控制器详解

文章目录 一.pod控制器的基础&#xff11;.pod概念及分类&#xff12;.什么是Pod控制器及其功用&#xff13;.pod控制器有多种类型&#xff08;1&#xff09;ReplicaSet&#xff08;2&#xff09;Deployment&#xff08;3&#xff09;DaemonSet&#xff08;4&#xff09;Statef…

视频截取gif动画怎么操作?轻松一键快速视频转gif

如何截取视频中的一段制作gif动画&#xff1f;当我们看到电影、电视剧等短视频中的某一个片段截取出来做成gif动画&#xff0c;应该如何操作呢&#xff1f;这时候&#xff0c;只需要使用gif制作&#xff08;https://www.gif.cn/&#xff09;工具&#xff0c;不用下载软件&#…

解决typescript报错:不能将类型xxx分配给类型xxx

现象&#xff1a; 这种情况是因为组件传参时&#xff1a; 等号左右两边的数据类型不能严格匹配一致造成的 等号左边data, 查看一下被传参的子组件ProductList的内部data属性: 可以看到data的类型是 &#xff1a; Product[] 而右边的shoppingCartItems来自于&#xff1a; redu…

配置pytorchGPU虚拟环境-python3.7

cuda版本的pytorch包下载地址戳这里 winR->输入cmd->输nvcc -V回车 cuda 11.0 输入以下命令来查找 CUDA 的安装路径&#xff1a; Windows: where nvcc 输入以下命令来查找 cuDNN 的版本号&#xff1a; Windows: where cudnn* cuDNN 8.0 本机安装的是cuda 11.0&…

JS前端树形Tree数据结构使用

前端开发中会经常用到树形结构数据&#xff0c;如多级菜单、商品的多级分类等。数据库的设计和存储都是扁平结构&#xff0c;就会用到各种Tree树结构的转换操作&#xff0c;本文就尝试全面总结一下。 如下示例数据&#xff0c;关键字段id为唯一标识&#xff0c;pid为父级id&am…

稳压器【TPS6283810YFPR 3A】汽车类、TPS629203QDRLRQ1,TPS74550PQWDRVRQ1采用小型6 引脚 WSON 封装。

一、TPS6283810、采用 1.2mm x 0.8mm WCSP 封装的 2.4V-5.5V 输入、6 引脚 3A 微型降压转换器 TPS6283810YFPR是一款高频同步降压转换器&#xff0c;经优化具有小解决方案尺寸和高效率等特性。该器件的输入电压范围为2.4V 至 5.5V&#xff0c;支持常用电池技术。该转换器在中等…

如何永久关闭WPS任务窗口?

1、按住任务窗口上的浮动按钮&#xff0c;将其拖出来成悬浮窗口。 第二步&#xff0c;使用火绒弹窗拦截&#xff0c;选中弹出的窗口&#xff0c;进行拦截。注意&#xff1a;拦截次数为2次。即进行2次操作。 操作两次后&#xff0c;弹窗被拦截&#xff0c;此时Word文档改为双页显…

众佰诚:现在的抖音小店赚钱是真的吗

随着互联网的飞速发展&#xff0c;社交媒体平台如抖音已经成为了许多人赚钱的新途径。在抖音上&#xff0c;越来越多的小店涌现出来&#xff0c;各种各样的产品被推销给用户。但是&#xff0c;人们普遍关心的一个问题是&#xff1a;现在的抖音小店赚钱是真的吗? 首先&#xff…

新闻报道的未来:自动化新闻生成与爬虫技术

概述 自动化新闻生成是一种利用自然语言处理和机器学习技术&#xff0c;从结构化数据中提取信息并生成新闻文章的方法。它可以实现大规模、高效、多样的新闻内容生产。然而&#xff0c;要实现自动化新闻生成&#xff0c;首先需要获取可靠的数据源。这就需要使用爬虫技术&#…

【慕伏白教程】 Linux 深度学习服务器配置指北

文章目录 镜像烧录系统安装系统配置常用包安装 镜像烧录 下载 Ubuntu 镜像 Ubuntu 桌面版 下载烧录工具 balenaEtcher 准备至少 8G 的 空白U盘 开始烧录 系统安装 开机进入BIOS&#xff0c;修改U盘为第一启动 选择 Try or Install Ubuntu 往下拉&#xff0c;选择 中文&a…

14:00面试,14:06就出来了,这问的谁顶得住啊

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%,…

视频汇聚平台EasyCVR从一分屏切换到四分屏后加载记录显示黑屏该如何解决?

视频汇聚/视频云存储/集中存储/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、云存储、智能分析等&#xff0c;视频智能分析平台EasyCVR融合性强、开放度…

order模块给User模块发送http请求

spring提供了一个工具叫做RestTemplate,这个工具就是spring提供给我们来发送http请求的 1.首先在配置类里面通过bean的形式将RestTemplate注册为spring的一个对象 细节:启动类也是一个配置类

【halcon特征点专题系列】01/4--Harris角点检测

一、说明 Harris角点检测是一种常用的计算机视觉算法,用于检测图像中的角点。它的原理是使用自适应窗口,在每个像素处计算其在该窗口内的灰度值变化量,即在不同方向上移动窗口后的灰度值变化量的平方和。如果该值超过一个阈值,则认为该像素是角点,因为角点处存在着较大的灰…

UG\NX二次开发 信息窗口的一些操作 NXOpen/ListingWindow

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介: UG\NX二次开发 信息窗口的一些操作 NXOpen/ListingWindow 效果: 代码: #include "me.hpp" #include <NXOpen/ListingWindow.hxx> #include <…