remove、remove_if、remove_copy、remove_copy_if

news2024/11/17 7:57:10

remove(b,e,v) //[b,e) 删value
remove_if(b,e,p) //[b,e) 删p条件
remove_copy(b,e,r,v) //[b,e) 删v,结果存入r
remove_copy_if(b,e,r,p) //[b,e) 删p条件,结果存入r

remove和remove_if结果相同,只是传入的条件不一样。示例图如下:

img

remove_copy和remove_copy_if会把pass的元素保存在目标迭代器,而不是直接在原始数据上修改。

#include <iostream>
#include <string>
#include<vector>
#include <algorithm>
using namespace std;

template<typename T>
void Print(T& v) {
	typename T::iterator iter = v.begin();
	while (iter != v.end()) {
		cout << *iter++ << " ";
	}
	cout << endl;
}

bool condition(int x) {
	return x == 2;
}
int main() {

	cout << "测试remove" << endl;
	int data[] = {1,3,2,3,2,1,3,2};
	vector<int> vec(data, data + 8);
	vector<int>::iterator ivec, it;
	ivec = remove(vec.begin(), vec.end(), 2);
	for (it = vec.begin(); it != ivec; it++) {
		cout << *it << " ";
	} //打印1 3 3 1 3
	cout << endl;
	cout << "实际数据是" << endl;
	Print(vec); //打印1 3 3 1 3 1 3 2
	cout << endl;


	cout << "测试remove_if" << endl;
	int data3[] = { 1,3,2,3,2,1,3,2 };
	vector<int> vec3(data3, data3 + 8);
	vector<int>::iterator ivec3, it3;
	ivec3 = remove_if(vec3.begin(), vec3.end(), condition);
	for (it3 = vec3.begin(); it3 != ivec3; it3++) {
		cout << *it3 << " ";
	}//打印1 3 3 1 3
	cout << endl;
	cout << "实际数据是" << endl;
	Print(vec3);//打印1 3 3 1 3 1 3 2
	cout << endl;


	cout << "测试remove_copy" << endl;
	int data2[] = { 1,3,2,3,2,1,3,2 };
	vector<int> vec2(data2, data2 + 8);
	vector<int>::iterator ivec2, it2;
    vector<int> myvec2(8);
	ivec2 = remove_copy(vec2.begin(), vec2.end(), myvec2.begin(), 2);
	for (it2 = vec2.begin(); it2 != ivec2; it2++) {
		cout << *it2 << " ";
	}//打印1 3 3 1 3
	cout << endl;
	cout << "实际数据是" << endl;
	Print(vec2);//打印1 3 2 3 2 1 3 2 
	cout << endl;
	
	
	cout << "测试remove_copy_if" << endl;
	int data4[] = { 1,3,2,3,2,1,3,2 };
	vector<int> vec4(data4, data4 + 8);
	vector<int>::iterator ivec4, it4;
	ivec4 = remove_copy_if(vec4.begin(), vec4.end(), vec4.begin(), condition);
	for (it4 = vec4.begin(); it4 != ivec4; it4++) {
		cout << *it4 << " ";
	}
	cout << endl;//打印1 3 3 1 3
	cout << "实际数据是" << endl;
	Print(vec4);//打印1 3 2 3 2 1 3 2 

	return 0;
}

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

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

相关文章

如何用输入函数为数组赋值

在编写程序时我们经常使用数组&#xff0c;而数组的大小可能是很大的但是我们并不需要为每个元素都自己赋值&#xff0c;我们可能会自定义输入数组元素个数&#xff0c;我们应该如何实现通过输入函数为数组赋值呢&#xff1f; 目录 第一种&#xff1a; 第二种&#xff1a; 第一…

信号量与管程

前言 我们知道&#xff0c;在并发领域内&#xff0c;需要关注分工、同步与互斥&#xff0c;针对分工问题&#xff0c;就是将任务拆解&#xff0c;分配给多个线程执行&#xff0c;而在多线程执行的过程中&#xff0c;需要解决线程之间的协作与互斥问题进而保证并发安全。那么解…

day-25 代码随想录算法训练营(19)回溯part02

216.组合总和||| 思路&#xff1a;和上题一样&#xff0c;差别在于多了总和&#xff0c;但是数字局限在1-9 17.电话号码的字母组合 思路&#xff1a;先纵向遍历第i位电话号码对于的字符串&#xff0c;再横向递归遍历下一位电话号码 93.复原IP地址 画图分析&#xff1a; 思…

OpenLayers实战,OpenLayers实现地图鼠标经过点要素时显示名称标注提示框,移出后隐藏

专栏目录: OpenLayers实战进阶专栏目录 前言 本章讲解OpenLayers实现地图鼠标经过点要素时显示名称标注提示框,移出后隐藏的功能。 二、依赖和使用 "ol": "^6.15.1"使用npm安装依赖npm install ol@6.15.1使用Yarn安装依赖yarn add olvue中如何使用:…

【Java基础】深入理解String、StringBuffer和StringBuilder的异同

文章目录 一、结论&#xff1a;二、可变性String&#xff08;不可变&#xff09;StringBuffer和StringBuilder&#xff08;可变&#xff09; 三、线程安全性String&#xff08;线程安全&#xff09;StringBuffer&#xff08;线程安全&#xff09;和StringBuilder&#xff08;线…

58.C++ STL标准模板库 STL概述 STL三大组件

一、初识STL 1.1 STL概述 长久以来&#xff0c;软件界⼀直希望建⽴⼀种可重复利⽤的东⻄&#xff0c;以及⼀种得以制造出”可重复运⽤的东⻄”的⽅法,让程序员的⼼⾎不⽌于随时间的迁移&#xff0c;⼈事异动⽽烟消云散&#xff0c;从函(functions)&#xff0c;类别(classes),函…

nginx 配置反向代理的逻辑原则案例(值得一看)

一 实操步骤 1.1 架构图 1.2 配置原则 匹配准则&#xff1a; 当proxy_pass代理地址端口后有目录(包括 / 和/xxx),相当于是绝对根路径&#xff0c;则 nginx 不会把 location 中匹配的路径部分代理走; 当proxy_pass代理地址端口后无任何内容&#xff0c;可以理解为相对路径…

matlab使用教程(19)—曲线拟合与一元方程求根

1.多项式曲线拟合 此示例说明如何使用 polyfit 函数将多项式曲线与一组数据点拟合。您可以按照以下语法&#xff0c;使用 polyfit 求出以最小二乘方式与一组数据拟合的多项式的系数 p polyfit(x,y,n), 其中&#xff1a; • x 和 y 是包含数据点的 x 和 y 坐标的向量 …

DP读书:鲲鹏处理器 架构与编程(七)ARMv8-A 体系结构

一小时速通ARMv8-A体系结构 一、ARMv8-A处理单元核心架构1. ARMv8-A架构的处理器运行模式a. ARMv8-A的执行架构A. AArch64 执行状态B. AArch32 执行状态 b. ARMv8-A架构支持的指令集c. ARMv8-A 支持的数据类型d. ARMv8-A 的异常等级与安全模型e. ARMv8-A的虚拟化架构f. ARMv8-A…

Vue项目商品购物车前端本地缓存逻辑(适用H5/ipad/PC端)——前端实现购物车删除商品、购物车增减数量,清空购物车功能

一、需求 1、用户选择商品&#xff0c;自动回显在购物车列表中&#xff1b; 2、同个商品追加&#xff0c;购物车列表数量叠加&#xff1b; 3、开启赠送&#xff0c;选中的商品&#xff0c;在购物车中另增一条数据&#xff0c;且购物车列表价格显示为0&#xff1b;其实际价格在…

【OpenVINOSharp】在英特尔® 开发者套件爱克斯开发板使用OpenVinoSharp部署Yolov8模型

在英特尔 开发者套件爱克斯开发板使用OpenVinoSharp部署Yolov8模型 一、英特尔开发套件 AIxBoard 介绍1. 产品定位2. 产品参数3. AI推理单元 二、配置 .NET 环境1. 添加 Microsoft 包存储库2. 安装 SDK3. 测试安装4. 测试控制台项目 三、安装 OpenVINO Runtime1. 下载 OpenVINO…

【无闪烁AI视频制作】

效果查看&#xff1a; https://tianfeng.space/wp-content/uploads/2023/08/8月16日-12.mp4 前言 现在其实有很多的AI视频了&#xff0c;效果也越来越逼真&#xff0c;来看看都是怎么制作的吧&#xff01; 安装 TemporalKit下载 https://github.com/CiaraStrawberry/Tempo…

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片

今日学习0.96寸单色OLED显示屏的自由取模显示: 宋体汉字比较复杂&#xff0c;常用字符可以直接复制存下来&#xff0c;毕竟只有那么几十个字母字符&#xff0c;但汉字实在太多了&#xff0c;基本不会全部放在单片机里存着&#xff0c;一般用到多少个字就取几个字的模&#xff…

操作系统_内存管理(一)

目录 1. 内存管理 1.1 内存管理的概念 1.1.1 内存管理的基本原理和要求 1.1.1.1 程序的链接和装入 1.1.1.2 逻辑地址与物理地址 1.1.1.3 进程的内存映像 1.1.1.4 内存保护 1.1.1.5 内存共享 1.1.1.6 内存分配与回收 1.2 覆盖与交换 1.2.1 覆盖 1.2.2 交换 1.3 连续…

华为认证为什么现在这么受欢迎?

华为认证目前受欢迎的原因有很多&#xff0c;以下是其中一些主要原因&#xff1a; 高质量的认证培训&#xff1a;华为认证提供了一系列高质量的培训课程&#xff0c;涵盖了IT技术、网络安全、云计算等领域。这些培训课程由华为的技术专家和工程师团队设计和提供&#xff0c;内容…

Openlayers 实战 - 地图视野(View)- 图层 -(layer)- 资源(source)显示等级设置

Openlayers 实战 - 地图视野&#xff08;View&#xff09;- 图层 -&#xff08;layer&#xff09;- 资源&#xff08;source&#xff09;显示等级设置 问题原因核心代码完整代码&#xff1a;在线示例 在以往的项目维护中&#xff0c;出现一个问题&#xff0c;使用最新高清底图发…

基于traccar快捷搭建gps轨迹应用

0. 环境 - win10 虚拟机ubuntu18 - i5 ubuntu22笔记本 - USB-GPS模块一台&#xff0c;比如华大北斗TAU1312-232板 - 双笔记本组网设备&#xff1a;路由器&#xff0c;使得win10笔记本ip&#xff1a;192.168.123.x&#xff0c;而i5笔记本IP是192.168.123.215。 - 安卓 手机 1.…

PHP酒店点菜管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 酒店点菜管理系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 代码下载 https://download.csdn.net/download/qq_41221322/88232051 论文 https://…

ARM体系结构学习笔记:NZCV

NZCV N: negative 算术逻辑运算单元运算结果为负1/正0 Z: zero 算术逻辑运算单元运算结果为零1/非零0 C: 3cases:1 0加法 Carray | Not Carray减法 Not Borrow | Borrow(Not Carray)移位 Bit Shifted | Rotated Out V: 后面详细阐述[外…

【C语言】数组概述

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;C语言 &#x1f525;该篇将带你了解 一维数组&#xff0c;二维数组等相关知识。 目录&#xff1a; &#x1f4d8;前言&#xff1a;&#x1f…