STL 中元素拷贝和替换相关算法

2023-11-18

copy

①.头文件

copy 算法定义在头文件 #include 中。

②.算法作用

copy 算法作用是把指定范围的迭代器的元素拷贝到指定的区间。

③.代码示例

vector<int> vec = { 1,2,5,9,5,4,3 };
cout << "原序列:" << endl;
for_each(vec.begin(), vec.end(), [](int i) {cout << i << " "; });

vector<int> vec2;
copy(vec.begin(), vec.begin()+5, back_inserter(vec2));

cout << endl << "新序列:" << endl;
for_each(vec2.begin(), vec2.end(), [](int i) {cout << i << " "; });

copy_if

①.头文件

copy_if 算法定义在头文件 #include 中。

②.算法作用

copy_if 算法作用是在指定范围的区间中按指定的规则筛选元素,并拷贝到指定的区间。

③.代码示例

vector<int> vec = { 1,2,3,4,5 };
cout << "原序列:" << endl;
for_each(vec.begin(), vec.end(), [](int i) {cout << i << " "; });

vector<int> vec2;
copy_if(vec.begin(), vec.end(), back_inserter(vec2), [](int i) {return i > 2; });

cout << endl << "新序列:" << endl;
for_each(vec2.begin(), vec2.end(), [](int i) {cout << i << " "; });

在这里插入图片描述

reverse_copy

①.头文件

reverse_copy 算法定义在头文件 #include 中。

②.算法作用

reverse_copy 算法作用是把指定范围的迭代器的元素以相反的顺序拷贝到指定的区间。

③.代码示例

vector<int> vec = { 1,2,3,4,5 };
cout << "原序列:" << endl;
for_each(vec.begin(), vec.end(), [](int i) {cout << i << " "; });

vector<int> vec2;
reverse_copy(vec.begin(), vec.begin() + 5, back_inserter(vec2));

cout << endl << "新序列:" << endl;
for_each(vec2.begin(), vec2.end(), [](int i) {cout << i << " "; });

在这里插入图片描述

copy_backward

①.头文件

copy_backward 算法定义在头文件 #include 中。

②.算法作用

copy_backward 算法需要指定目的区间的末尾迭代器,序列以倒序的方式拷贝指定区间的末尾。

③.代码示例

vector<int> vec = { 1,2,3,4,5 };
cout << "原序列:" << endl;
for_each(vec.begin(), vec.end(), [](int i) {cout << i << " "; });

vector<int> vec2(10,0);
copy_backward(vec.begin(), vec.end(), vec2.end());

cout << endl << "新序列:" << endl;
for_each(vec2.begin(), vec2.end(), [](int i) {cout << i << " "; });

在这里插入图片描述

transform

①.头文件

transform 算法定义在头文件 #include 中。

②.算法作用

transform 算法作用是把指定范围的迭代器的元素用指定的函数处理后把结果拷贝到指定的区间。

③.代码示例

vector<int> vec = { 1,2,5,9,5,4,3 };
cout << "原序列:" << endl;
for_each(vec.begin(), vec.end(), [](int i) {cout << i << " "; });

vector<int> vec2;
transform(vec.begin(), vec.end(), back_inserter(vec2), [](int i) { return i + 10; });

cout << endl << "新序列:" << endl;
for_each(vec2.begin(), vec2.end(), [](int i) {cout << i << " "; });

在这里插入图片描述

replace

①.头文件

replace 算法定义在头文件 #include 中。

②.算法作用

replace 算法作用是把指定范围中指定的旧元素替换成新元素。

③.代码示例

vector<int> vec = { 1,2,5,9,5,4,3 };
cout << "原序列:" << endl;
for_each(vec.begin(), vec.end(), [](int i) {cout << i << " "; });

replace(vec.begin(), vec.end(), 5, 9);
cout << endl << "新序列:" << endl;
for_each(vec.begin(), vec.end(), [](int i) {cout << i << " "; });

在这里插入图片描述

replace_if

①.头文件

replace_if 算法定义在头文件 #include 中。

②.算法作用

replace_if 算法是 replace 的升级版,可以传入一个一元谓词,作用是在指定范围中按指定的条件筛选旧元素替换成新元素。

③.代码示例

 vector<int> vec = { 1,2,5,9,5,4,3 };
 cout << "原序列:" << endl;
 for_each(vec.begin(), vec.end(), [](int i) {cout << i << " "; });

 replace_if(vec.begin(), vec.end(), [](int i) {return i < 4; }, 0);
 cout << endl << "新序列:" << endl;
 for_each(vec.begin(), vec.end(), [](int i) {cout << i << " "; });

在这里插入图片描述

replace_copy

①.头文件

replace_copy 算法定义在头文件 #include 中。

②.算法作用

replace_copy 算法作用是把指定范围中指定的旧元素替换成新元素,但是不改变原序列,而是把替换后的结果拷贝到一个新序列。

③.代码示例

vector<int> vec = { 1,2,3,4,5 };
cout << "原序列:" << endl;
for_each(vec.begin(), vec.end(), [](int i) {cout << i << " "; });

vector<int> vec2;
replace_copy(vec.begin(), vec.end(), back_inserter(vec2), 4,9 );

cout << endl << "新序列:" << endl;
for_each(vec2.begin(), vec2.end(), [](int i) {cout << i << " "; });

在这里插入图片描述

swap

①.头文件

swap 算法定义在头文件 #include 中。

②.算法作用

swap 算法的作用是交换两个对象的值,也可以是两个容器的值。

③.代码示例

vector<int> vec1 = { 1,2,3,4 };
 vector<int> vec2 = { 4,5,6 };

 cout << "原序列 vec1:" << endl;
 for_each(vec1.begin(), vec1.end(), [](int i) {cout << i << " "; });
 cout << endl << "原序列 vec2:" << endl;
 for_each(vec2.begin(), vec2.end(), [](int i) {cout << i << " "; });

 swap(vec1, vec2);
   
 cout << endl << "新序列 vec1:" << endl;
 for_each(vec1.begin(), vec1.end(), [](int i) {cout << i << " "; });
 cout << endl << "新序列 vec2:" << endl;
 for_each(vec2.begin(), vec2.end(), [](int i) {cout << i << " "; });

在这里插入图片描述

swap_ranges

①.头文件

swap_ranges 算法定义在头文件 #include 中。

②.算法作用

swap_ranges 算法的作用是对两个序列中指定范围的元素进行交换。

③.代码示例

vector<int> vec1 = { 1,2,3,4 };
vector<int> vec2 = { 5,6,7,8 };

cout << "原序列 vec1:" << endl;
for_each(vec1.begin(), vec1.end(), [](int i) {cout << i << " "; });
cout << endl << "原序列 vec2:" << endl;
for_each(vec2.begin(), vec2.end(), [](int i) {cout << i << " "; });

swap_ranges(vec1.begin()+2, vec1.end(),vec2.begin()+2);

cout << endl << "新序列 vec1:" << endl;
for_each(vec1.begin(), vec1.end(), [](int i) {cout << i << " "; });
cout << endl << "新序列 vec2:" << endl;
for_each(vec2.begin(), vec2.end(), [](int i) {cout << i << " "; });

在这里插入图片描述

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STL 中元素拷贝和替换相关算法 的相关文章

  • 尝试将元素推入向量

    在头文件 我没有编写 中 已经定义了一个结构体 如下所示 struct MemoryMessage public boost counted base public FastAlloc explicit MemoryMessage Memo
  • 从 Java 应用程序读取的文件是否会调用系统调用?

    我的理解是 请求文件系统路径 例如 aFile 的用户应用程序将调用文件系统并获取所请求文件的虚拟地址 然后应用程序将尝试以该地址作为参数 即作为 CPU 指令 进行读 写操作 执行读取命令时 内存管理单元会将该地址转换为物理地址 并查看页
  • 在 C 程序中追踪数组越界访问/写入的推荐方法

    考虑用 C 语言编写一些不太明显的算法的实现 例如 让它成为递归快速排序 我在 K N King 的 C 编程 现代方法 第二版 书中找到了它 可以从here http knking com books c2 programs qsort
  • 为什么 CompletableFuture 的 thenAccept() 不在主线程上运行

    我在 CompletableFuture 的 SupplyAsync 中处理长时间运行的操作 并将结果放入 thenAccept 中 有时 thenAccept 在主线程上执行 但有时它在工作线程上运行 但我只想在主线程上运行 thenAc
  • 使用 C 创建立体声正弦波

    我正在尝试用 C 创建立体声正弦 WAV 并且可能有不同的 可能是空白的 左声道和右声道 使用此函数为每个通道生成一个音调 int16 t create tone float frequency float amplitude float
  • 使用经度和纬度查找给定距离内的所有附近客户

    我有一个包含客户经度和纬度的数据库 我有一个搜索表单 用户将在其中输入日志 纬度 距离下拉列表包含 50 英里 100 英里 当用户单击搜索时 我想编写一个 linq 查询从数据库中获取此距离半径内的所有客户 如何使用 C 和 linq 来
  • AWS SQS Batch SendMessageBatchRequest 非常慢

    我的应用程序使用 SendMessageBatchRequest 将每个请求发布 10 条消息到 AWS SQS 每条消息的大小小于250字节 该应用程序预计每天发布约一百万条记录 但要实现这一目标 消息发布的速度非常慢 AmazonSQS
  • 尝试通过 Java 8 中的 JDBC-ODBC 连接到 .accdb 文件时出现 ClassNotFoundException

    我正在 Eclipse EE IDE 中的 Java 项目中工作 我必须在其中查询 accdb文件 问题是当我尝试加载驱动程序然后连接到数据库时 它给了我一个异常错误 My code try String filePath myfilepa
  • 标准头文件中的 C 编译器错误 - 未定义的 C++ 定义

    我正在尝试编译 C 程序 但收到许多错误 这些错误是在标准 C 头文件 inttypes h stdio h stat h 等 中遇到的 错误的来源是以下未定义的常量 BEGIN DECLS END DECLS BEGIN NAMESPAC
  • 可空日期列合并问题

    我在 Geronimo 应用程序服务器上使用 JPA 和下面的 openjpa 实现 我也在使用MySQL数据库 我在更新具有可为空 Date 属性的对象时遇到问题 当我尝试合并 Date 属性设置为 null 的实体时 不会生成 sql
  • 隐藏 JTable 临时列

    我正在使用 JTable 显示数据库中的数据 现在我想通过 Jcombobox 过滤我的 jtable 我正在使用 Jcombo 框 其中包含 030 024 045 等值 这些值已在 jtable 中设置为列标题 当我单击组合时 选定的列
  • #define, #ifdef #undef #endif

    我有以下代码 define PROC ADD void main void while 1 ifdef PROC ADD Do this code here then undefined it to run the code in the
  • 更新插入 MongoDB 时如何防止出现“_t”字段?

    我有一个应用程序 它使用 MongoDB 的 C 驱动程序将 Upsert 插入 MongoDB 数据库 当我打电话给Update函数 我无法指定我要更新的类型 然后 t字段插入元素的类型 这是我用来更新插入的代码 collection U
  • 在edittext android中插入imageview

    我想将 imageview 放在 edittext 中 可能吗 我检查了 evernote 应用程序 它能够将照片放在编辑文本部分 我想让我的应用程序完全相同 我如何才能将从图库中选择的图像视图放入编辑文本中 我首先尝试将 imagevie
  • 在 Spark MLlib 上使用 Java 中的 Breeze

    在尝试从Java使用MLlib时 使用微风矩阵运算的正确方法是什么 例如scala 中的乘法很简单 matrix vector 相应的功能在Java中是如何表达的 有一些方法 例如 colon times 可以通过正确的方式调用 breez
  • jquery ajax“发布”调用

    我是 jQuery 和 Ajax 的新手 并且在 发布 方面遇到问题 我正在使用 jQuery Ajax post 调用将数据保存到数据库 当我尝试保存数据时 它将 null 传递给我的 C 方法 jQuery 看起来像这样 functio
  • 如何并排显示 4 个三角形图案

    我无法让 4 个不同的三角形图案并排出现 这是一个控制台应用程序 这正是我试图通过使用嵌套 for 循环来实现的目标
  • 如果未返回,则在一段时间后终止线程

    我有一个线程从网络或串行端口获取一些数据 如果 5 秒内没有收到数据 则线程必须终止 或返回 false 换句话说 如果线程运行时间超过 5 秒 则必须停止 我用 C 编写 但任何 NET 语言都可以 有两种方法 1 封装超时 从网络或串行
  • 你将如何开始自动化我的工作? - 第2部分

    后续这个问题 https stackoverflow com questions 2796128 how would you start automating my job 在经历了第一波进货 9 小时的复制 粘贴 后 我现在相信我已经满足
  • C++20 范围太多 |运营商?

    我在这段代码中使用 g 10 2 有谁知道为什么我最后收到编译器错误std views reverse on results3 include

随机推荐

  • LuCI - 网页用户配置界面开发

    luci 参考资料 http luci subsignal org trac wiki Documentation http wiki openwrt org doc techref preinit mount first boot htt
  • 【IOS 开发学习总结-OC-4】objective-c 运算符

    运算符是用于数据运算 赋值和比较等的特殊符号 objective c 语言中的运算符有以下几种 算术运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 类型相关运算符 算术运算符 有7个基本运算符 加法运算符 减法运算符 还可以作为负号使
  • Ubuntu下安装jdk1.7

    转载 http blog csdn net zth1002 article details 51383508 1 去到官网下载jdk 点击打开链接 2 安装WinSCP工具连接到Linux系统上面在 usr lib里面新建一个jvm文件夹
  • UPF与低功耗设计实现实例 -- 附UPF与DC综合脚本

    原文链接 https www eefocus com industrial electronics 473034 本文摘自 数字集成电路低功耗物理实现技术与 UPF 孙轶群 sun yiqun nationz com cn 国民技术股份有限
  • Tomcat Port8009与AJP13协议

    Tomcat最主要的功能是提供Servlet JSP容器 尽管它也可以作为独立的Java Web服务器 它在对静态资源 如HTML文件或图像文件 的处理速度 以及提供的Web服务器管理功能方面都不如其他专业的HTTP服务器 如IIS和Apa
  • java.util.ConcurrentModificationException

    错误类型 java util ConcurrentModificationException 出现原因 在foreach增强循环中进行了元素删除操作 只要是集合这样做都会出现这个问题 ConcurrentModificationExcept
  • Unity 2D人物移动实现

    Unity 2D人物移动实现 效果展示 代码 using System Collections using System Collections Generic using UnityEngine public class Parentne
  • 基础网络故障检测

    基本网络故障检测 背景 随着网络的普遍应用 客户在使用网络时随时随刻会出现网络不通或严重卡顿现象 因如今的网络应用量大且拓扑负责 好的网络故障检测方法技术支持工程师必备的小技能包 下面我分享下我学到和用到的企业网络故障检查和排错思路 问题
  • 9:00面试,9:06就出来了,问的问题实在有点变态。。。

    从小厂出来 没想到在另一家公司又寄了 到这家公司开始上班 加班是每天必不可少的 看在钱给的比较多的份上 就不太计较了 没想到5月一纸通知 所有人不准加班 加班费不仅没有了 薪资还要降40 这下搞的饭都吃不起了 还在有个朋友内推我去了一家互联
  • 你了解docker技术的意义及用途吗?

    要说2015年扩张得最快的技术 那一定要数Docker不可 随着 互联网 的被重视以及大数据 云服务的兴起 相关的技术更是如雨后春笋般冒起 当中 有很多性能优良的技术更是先赢一步 不仅进入IT者的视界 更被众多的企业委以重任 现在 就随大圣
  • fcgi程序两种编写风格

    fcgi进程可以写成单线程的 也可以写成多线程的 单线程就是main函数中有一个死循环 一直等待接受请求 有请求过来时 就处理请求 并返回结果 没有并发性 多线程也分两种模式 一种是main函数起多个线程 每个线程都独立接受请求 另一种是m
  • Debian10搭建Apache2

    文章目录 1 所需设备 2 任务描述 3 配置Apache2 3 测试 1 所需设备 Debian10Server IPaddress 10 1 1 1 netmask 255 255 255 0 IPaddress 10 1 1 2 ne
  • 数组--二维数组

    JAVA的二维数组 二维数组 在二维数组中的每一个元素中都是一个一维数组 意思就是两个一维数组相嵌套而成的数组 二维数组的声明 有一下两种 int a int a 在声明时 一般推荐第一种情况 方便代码阅读 二维数组在创建时也要给定数组的长
  • Android Studio :Could not find com.android.tools.build:aapt2

    Android Studio 又一次升级 从Android Studio3 2升级到Android Studio3 3 每次升级都是抱着必死的很大的决心进行升级 就怕Android Studio罢工 到时候一番乱搞 问题大概是下面这个样子的
  • 机器学习练习题(二)

    从牛客网找来得题目 解析是题目下的高赞答案 1 下面有关分类算法的准确率 召回率 F1 值的描述 错误的是 a 准确率是检索出相关文档数与检索出的文档总数的比率 衡量的是检索系统的查准率 b 召回率是指检索出的相关文档数和文档库中所有的相关
  • 若依框架快速开发项目(避坑超详细)

    若依框架快速开发项目 避坑超详细 初衷 若依框架使用及其普遍 是一个非常优秀的开源框架 框架本身的权限系统 字典设置以及相关封装 安全拦截相当完善 本人受益匪浅 学学到了许多 在这里 先向原创作者致敬 本人刚刚接触这个框架的时候 很迷茫 几
  • 前端多级搜索条件,不走后台

    handleSearch 备份数据 let arr JSON parse JSON stringify this tableData form是查询条件 通过遍历key值来循环处理 Object keys this form forEach
  • 爬虫篇:动态网页的处理方式(中)——渲染动态网页

    每篇一句 A strong man will struggle with the storms of fate 前言 上一篇文章中我们介绍了爬取动态网页的一种方式 逆向工程 这种方式有一点美中不足 这种方式要求我们对JavaScript以及
  • Java将PDF文件转为Word文档

    Java将PDF文件转为Word文档 一 创建Springboot Maven项目 二 导入依赖信息
  • STL 中元素拷贝和替换相关算法

    copy 头文件 copy 算法定义在头文件 include 中 算法作用 copy 算法作用是把指定范围的迭代器的元素拷贝到指定的区间 代码示例 vector