c++拷贝与替换算法

一:

copy 算法是 C++ STL 中的一个常用算法,用于将一个范围内的元素复制到另一个范围。它的函数原型如下:

template<class InputIt, class OutputIt> OutputIt copy(InputIt first, InputIt last, OutputIt d_first);

这个算法接受三个参数:

  • first 和 last 是输入范围的迭代器,表示要复制的元素范围。first 指向要复制的第一个元素,last 指向要复制的最后一个元素的下一个位置。
  • d_first 是输出范围的迭代器,表示复制的目标位置。复制的元素将从 d_first 开始,覆盖原有的元素,直到复制完所有的元素。

std::copy 算法会将输入范围 [first, last) 中的元素复制到输出范围 [d_first, d_first + (last - first)) 中。它会返回一个迭代器,指向复制的范围的下一个位置,即 d_first + (last - first)

void test01()
{vector<int>v = { 1,2,5,3,2 };vector<int>v2;v2.resize(v.size());copy(v.begin(), v.end(), v2.begin());for_each(v2.begin(), v2.end(), [](int val)->void {cout << val << " "; });
}

 

二:

replace 算法是 C++ STL 中的一个常用算法,用于替换容器中的所有匹配元素。它的函数原型如下:

template<class ForwardIt, class T> void replace(ForwardIt first, ForwardIt last, const T& old_value, const T& new_value);

这个算法接受四个参数:

  • first 和 last 是容器中的迭代器,表示要替换的元素范围。first 指向要替换的第一个元素,last 指向要替换的最后一个元素的下一个位置。
  • old_value 是要被替换的值。
  • new_value 是替换后的值。

std::replace 算法会遍历输入范围 [first, last) 中的所有元素,将与 old_value 相等的元素替换为 new_value

struct myfunc
{bool operator()(int val){return val > 3;}
};
void test02()
{vector<int>v = { 1,2,5,3,2 };for_each(v.begin(), v.end(), [](int val)->void {cout << val << " "; });cout << endl;replace(v.begin(), v.end(), 2, 200);for_each(v.begin(), v.end(), [](int val)->void {cout << val << " "; });replace_if(v.begin(), v.end(), myfunc(), 200);cout << endl;for_each(v.begin(), v.end(), [](int val)->void {cout << val << " "; });
}

 

三:

swap是 C++ STL 中的一个常用算法,用于交换两个变量的值。它的函数原型如下:

template<class T> void swap(T& a, T& b);

void test03()
{vector<int>v{ 1,2,3,4 };vector<int>v1{6, 7, 8, 9};swap(v, v1);for_each(v.begin(), v.end(), [](int val)->void {cout << val << " "; });cout << endl;for_each(v1.begin(), v1.end(), [](int val)->void {cout << val << " "; });cout << endl;
}

 

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

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

相关文章

Linux库之动态库静态库

一、什么是库&#xff08;Library&#xff09; 二、库的分类 三、静态库、动态库优缺点 四、静态库的制作和使用 五、动态库的制作和使用 SO-NAME–解决主版本号之间的兼容问题 基于符号的版本机制 共享库系统路径 共享库的查找过程 有用的环境变量 gcc 编译器常用选项 Linux共…

STM32F1外部中断EXTI

目录 1. EXTI简介 2. EXTI基本结构 3. AFIO复用IO口 4. EXTI框图 5. EXTI程序配置 5.1 首先先配置要使用的GPIO口的引脚 5.2 配置AFIO数据选择器&#xff0c;选择想要中断的引脚 5.3 EXTI配置 1. EXTI简介 EXTI&#xff08;Extern Interrupt&#xff09;外部中…

思腾云计算中心 | 5千平米超大空间,基础设施完善,提供裸金属GPU算力租赁业务

2021年&#xff0c;思腾合力全资收购包头市易慧信息科技有限公司&#xff0c;正式开启云计算业务。思腾云计算中心占地2400平米&#xff0c;位于包头市稀土高新区&#xff0c;毗邻多家知名企业&#xff0c;地理位置优越&#xff0c;交通便利&#xff0c;是区内重要的信息化产业…

配置集群免密登录

文章目录 前言配置集群免密登录1. 设置主机名与 IP 地址的映射关系2. 生成 SSH 密钥对3. 将公钥复制到集群节点4. 测试免密登录5. 配置节点之间互相免密登录 总结 前言 本文介绍了如何配置集群之间免密登录&#xff0c;以便在搭建集群环境时方便地进行节点之间的通信。通过设置…

【开源】基于Vue.js的公司货物订单管理系统

文末获取源码&#xff0c;项目编号&#xff1a; S 082 。 \color{red}{文末获取源码&#xff0c;项目编号&#xff1a;S082。} 文末获取源码&#xff0c;项目编号&#xff1a;S082。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供…

19、pytest通过mark标记测试函数

官方实例 [pytest] markers slow:marks tests as slow(deselect with -m "not slow")serial# content of test_mark.py import pytestpytest.mark.slow def test_mark_function():print("test_mark_function was invoked")assert 0解读与实操 通过使用p…

FairGuard无缝兼容小米澎湃OS、ColorOS 14 、鸿蒙4!

随着移动互联网时代的发展&#xff0c;各大手机厂商为打造生态系统、构建自身的技术壁垒&#xff0c;纷纷投身自研操作系统。 而对于一款游戏安全产品&#xff0c;在不同操作系统下&#xff0c;是否能够无缝兼容并且提供稳定的、高强度的加密保护&#xff0c;成了行业的一大痛…

7、信息收集(2)

文章目录 一、目录扫描1.1 目录扫描的原因1.2 目录扫描方法 二、指纹识别2.1 系统指纹识别2.2 中间件指纹识别2.3 web程序指纹识别2.4 防火墙指纹识别2.5 其他工具使用 三、Google Hacking3.1 逻辑运算符3.2 基本语法3.3 相关案例 一、目录扫描 1.1 目录扫描的原因 寻找网站后…

docker中mysql的数据迁移

在Docker中进行MySQL数据迁移通常涉及将数据从一个MySQL容器导出&#xff0c;并将其导入到另一个容器或主机上的MySQL实例中。以下是一般步骤&#xff1a; 步骤 1: 在源 MySQL 容器中导出数据 进入源 MySQL 容器&#xff1a; docker exec -it <source_mysql_container_name…

翻译: 大语言模型LLMs能做什么和不能做什么 保存笔记What LLMs can and cannot do

生成式 AI 是一项惊人的技术&#xff0c;但它并非万能。在这个视频中&#xff0c;我们将仔细看看大型语言模型&#xff08;LLM&#xff09;能做什么&#xff0c;不能做什么。我们将从我发现的一个有用的心理模型开始&#xff0c;了解它能做什么&#xff0c;然后一起看看 LLM 的…

怎么验证公钥和私钥是一对

文章目录 前言ssh-keygen 和 openssl两种证书的内容对比 从私钥提取公钥OPENSSH和PEM两种密钥格式相互转化OpenSSH 格式私钥转换成 OpenSSL PEM 格式私钥OpenSSL PEM 格式私钥转换成 OpenSSH 格式私钥OpenSSH 格式公钥生成 OpenSSL PEM 格式公钥OpenSSL PEM 格式公钥生成 OpenS…

【Azure 架构师学习笔记】- Azure Databricks (2) -集群

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (1) - 环境搭建 前言 在上文中提到了ADB 的其中一个核心就是集群&#xff0c;所以这里专门研究一下ADB 的集群。 ADB 集群 首先了解一下ADB…

《SpringBoot项目实战》第六篇—接口防抖(防重复提交)的一些方式

系列文章导航 第一篇—接口参数的一些弯弯绕绕 第二篇—接口用户上下文的设计与实现 第三篇—留下用户调用接口的痕迹 第四篇—接口的权限控制 第五篇—接口发生异常如何统一处理 第六篇—接口防抖(防重复提交)的一些方式 本文参考项目源码地址&#xff1a;summo-springboot-i…

SpringBoot基础知识

SpringBoot简介 回顾什么是Spring Spring是一个开源框架&#xff0c;2003 年兴起的一个轻量级的Java 开发框架&#xff0c;作者&#xff1a;Rod Johnson 。 Spring是为了解决企业级应用开发的复杂性而创建的&#xff0c;简化开发。 Spring是如何简化Java开发的 为了降低Ja…

记录:Unity脚本的编写9.0

目录 射线一些准备工作编写代码 突然发现好像没有写过关于射线的内容&#xff0c;我就说怎么总感觉好像少了什么东西&#xff08;心虚 那就在这里写一下关于射线的内容吧&#xff0c;将在这里实现射线检测鼠标点击的功能 射线 射线是一种在Unity中检测碰撞器或触发器的方法&am…

22、pytest多个参数化的组合

官方实例 # content of test_multi_parametrie.py import pytestpytest.mark.parametrize("x",[0,1]) pytest.mark.parametrize("y",[2,3]) def test_foo(x,y):print("{}-{}".format(x,y))pass解读与实操 要获得多个参数化参数的所有组合&…

什么是HTTP/2?它与HTTP/1.x相比有什么改进?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

《论文阅读》使用条件变分自动编码器学习神经对话模型的语篇水平多样性 2017 ACL

《论文阅读》使用条件变分自动编码器学习神经对话模型的语篇水平多样性 2017 ACL 前言简介相关知识Stochastic Gradient Variational BayesMultivariate Gaussian DistributionIsotropic Gaussian DistributionReparameterization Trickprior network & posterior network …

简述Blender

前言 Blender是一款免费开源的3D计算机图形软件&#xff0c;功能强大&#xff0c;包括建模、动画、渲染、视频剪辑等多个方面。下面我分别为你介绍Blender的基础、提升、优势和应用领域。 介绍 Blender是由Blender基金会开发的开源项目&#xff0c;最初设计为一个内部工具&a…

C++ 函数详解

目录 函数概述 函数的分类 函数的参数 函数的调用 函数的嵌套调用 函数的链式访问 函数声明和定义 函数递归 函数概述 函数——具有某种功能的代码块。 一个程序中我们经常会用到某种功能&#xff0c;如两数相加&#xff0c;如果每次都在需要用到时实现&#xff0c;那…