15.C++常用的算法_拷贝和替换算法

news2024/11/17 3:23:33

文章目录

    • 遍历算法
      • 1. copy()
        • 代码工程
        • 运行结果
      • 2. replace()
        • 代码工程
        • 运行结果
      • 3. replace_if()
        • 代码工程
        • 运行结果
      • 4. swap()
        • 代码工程
        • 运行结果

遍历算法

1. copy()

代码工程
copy()函数不要因为使用而使用
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

void printVector(const vector<int>&v)
{
	for (vector<int>::const_iterator it = v.begin(); it != v.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}

void test01()
{
	vector<int>v1;

	v1.push_back(10);
	v1.push_back(20);
	v1.push_back(30);
	v1.push_back(40);

	vector<int>v2;
	v2.resize(v1.size());

	copy(v1.begin(), v1.end(), v2.begin());

	printVector(v2);

	return;
}

int main()
{
	test01();

	return 0;
}

运行结果

在这里插入图片描述

2. replace()

replace()函数是将容器中旧元素替换为指定的新元素;
注意:是将容器中的所有符合的旧元素,全部替换为新元素。
代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

void printVector(const vector<int>&v)
{
	for (vector<int>::const_iterator it = v.begin(); it != v.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}

void test01()
{
	vector<int>v1;

	v1.push_back(10);
	v1.push_back(20);
	v1.push_back(30);
	v1.push_back(40);
	v1.push_back(30);

	cout << "替换前:";
	printVector(v1);

	/*区间内的指定元素替换成新元素,将30替换为100*/
	replace(v1.begin(), v1.end(), 30, 100);

	cout << "替换后:";
	printVector(v1);

	return;
}

int main()
{
	test01();

	return 0;
}

运行结果

在这里插入图片描述

3. replace_if()

replace_if()函数是将容器中符合条件的旧元素替换为指定的新元素;
注意:是将容器中的所有符合条件的旧元素,全部替换为新元素。
代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

void printVector(const vector<int>&v)
{
	for (vector<int>::const_iterator it = v.begin(); it != v.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}

class GreatTwenty
{
public:
	bool operator()(int val)
	{
		return val > 20;
	}
};

void test01()
{
	vector<int>v1;

	v1.push_back(10);
	v1.push_back(20);
	v1.push_back(30);
	v1.push_back(40);
	v1.push_back(30);
	v1.push_back(50);
	v1.push_back(20);

	cout << "替换前:";
	printVector(v1);

	/*将大于20的元素,替换为2000*/
	replace_if(v1.begin(), v1.end(), GreatTwenty(), 2000);

	cout << "替换后:";
	printVector(v1);

	return;
}

int main()
{
	test01();

	return 0;
}


运行结果

在这里插入图片描述

4. swap()

swap()函数,将两个容器的元素进行交换;
注意:入参是将容器变量直接填入。
代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

void printVector(const vector<int>&v)
{
	for (vector<int>::const_iterator it = v.begin(); it != v.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}

void test01()
{
	vector<int>v1;

	v1.push_back(10);
	v1.push_back(20);
	v1.push_back(30);
	v1.push_back(40);

	vector<int>v2;

	v2.push_back(100);
	v2.push_back(200);
	v2.push_back(300);
	v2.push_back(400);

	cout << "交换前" << endl;
	cout << "v1容器元素:";
	printVector(v1);
	cout << "v2容器元素:";
	printVector(v2);
	cout << endl;

	/*交换2个容器的元素*/
	swap(v1, v2);

	cout << "交换后" << endl;
	cout << "v1容器元素:";
	printVector(v1);
	cout << "v2容器元素:";
	printVector(v2);


	return;
}

int main()
{
	test01();

	return 0;
}


运行结果

在这里插入图片描述

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

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

相关文章

Java代码基础算法练习-分段函数求值-2024.04.21

任务描述&#xff1a; 有一个函数&#xff0c;写一段程序&#xff0c;输入x&#xff0c;输出y。 任务要求&#xff1a; 代码示例&#xff1a; package April_2024;import java.util.Scanner;public class a240421 {public static void main(String[] args) {Scanner sc new S…

根文件系统的构建

文章目录 一、根文件系统是什么&#xff1f;二、根文件目录1.bin目录2.etc3.lib4.mnt5.proc6.sys7.usr8.dev9.opt10.var 三.使用工具Busybox构建根文件系统1.rootfs文件夹创建2.在makefile中添加交叉编译器3.busybox 中文字符支持4.配置 默认busybox5.使用图形界面配置busybox6…

Mysql 、Redis 数据双写一致性 更新策略与应用

零、important point 1. 缓存双写一致性问题 2. java实现逻辑&#xff08;对于 QPS < 1000 可以使用&#xff09; public class UserService {public static final String CACHE_KEY_USER "user:";Resourceprivate UserMapper userMapper;Resourceprivate Re…

部署Hyperledger Fabric测试区块链网络

一. 快速启动区块链测试网络 启动Fabric虚拟机 将 fabric-samples.zip 拷贝进虚拟机 ubzip fabric-samples.zip 解压并重命名为fabric-samples mv fabric-samples-main fabric-samples 拷贝bin和config目录 cd fabric-samples cp ~/fabric/bin bin -r cp ~/fabric/config …

企业如何走出“费控”迷雾,打造逆势增长“新引擎”?

“你先自己垫一下&#xff0c;回头再报销。”职场中人或多或少都听到过这句话&#xff0c;这一等可能就是猴年马月。 报销数字化仅仅是企业费控管理的一方面&#xff0c;随着企业对费用的认知从“管控”到“管理”的升级&#xff0c;企业对于费用管理的期望也向全流程、精细化&…

报错The chromedriver version cannot be discovered以及下载chromedriver.exe和查看其版本的命令

python3.8.10&#xff0c;win10。 谷歌浏览器版本&#xff08;我写代码的时候还是123.0.x.x&#xff0c;没几天就自动更新到124.0.x.x了&#xff09;&#xff1a; 在使用selenium的时候&#xff0c;出现报错&#xff0c;The chromedriver version cannot be discovered。 &am…

C语言中字符串函数以及内存函数的使用和注意事项

目录 0. 前言 1、求字符串长度函数 1.1、strlen 模拟实现 2.长度不受限制的字符串函数 2.1 strcpy 模拟实现 2.2strcat 模拟实现 2.3strcmp 模拟实现 3.长度受限制的字符串函数 3.1strncpy 3.2strncat 3.3strncmp 4、字符串查找函数 4.1strstr 模拟实现 3.2strt…

使用51单片机控制T0和T1分别间隔1秒2秒亮灭逻辑

#include <reg51.h>sbit LED1 P1^0; // 设置LED1灯的接口 sbit LED2 P1^1; // 设置LED2灯的接口unsigned int cnt1 0; // 设置LED1灯的定时器溢出次数 unsigned int cnt2 0; // 设置LED2灯的定时器溢出次数// 定时器T0 void Init_Timer0() {TMOD | 0x01;; // 定时器…

HarmonyOS ArkUI实战开发-页面跳转(Router、Ability)

页面跳转可以分为页面内跳转和页面间跳转&#xff0c;页面内跳转是指所跳转的页面在同一个 Ability 内部&#xff0c;它们之间的跳转可以使用 Router 或者 Navigator 的方式&#xff1b;页面间跳转是指所跳转的页面属与不同的 Ability &#xff0c;这种跳转需要借助 featureAbi…

Java中的对象

什么是类和对象 在Java中类是物以类聚&#xff0c;分类的思维模式&#xff0c;思考问题首先会解决问题需要哪些分类&#xff0c;然后对这些类进行单独思考&#xff0c;最后才是对某分类下的细节进行单独思考 面向对象适合处理复杂问题适合处理需要多人协作的问题 在Java中面向…

二维前缀和与差分

前言 延续前面所讲的一维前缀和以及差分&#xff0c;现在来写写二维前缀和与差分 主要这个画图就比前面的一维前缀和与差分复杂一点&#xff0c;不过大体思路是一样的 一维和二维的主要思路在于一维是只针对对一行一列&#xff0c;而二维是针对与一个矩阵的 好吧&#xff0…

可视化大屏在政务领域应用非常普遍,带你看看

可视化大屏在政务领域的应用非常普遍&#xff0c;政务领域需要处理大量的数据和信息&#xff0c;通过可视化大屏可以将这些数据以直观、易懂的方式展示出来&#xff0c;帮助政府决策者和工作人员更好地了解和分析数据&#xff0c;从而做出更准确、科学的决策。 在政务领域&…

java学习之路-抽象类和接口

目录 前言 1.抽象类 1.2抽象类语法 1.3抽象类特性 1.4抽象类的作用 2.接口 2.1接口概念 2.2接口的定义 2.3接口的使用 接口使用栗子 2.4接口特性 2.5 实现多个接口 请看栗子 2.6接口间的继承 2.7接口使用实例 2.8Clonable 接口和深浅拷贝 2.9 抽象类和接口的区别…

Qt图片等资源管理

Qt的图片等资源管理通常有两种方式 1&#xff0c;直接将图标和一些配置文件打包在可执行程序中 添加qrc文件&#xff0c;可使用qtcreator直接添加 右键选中工程 点击选择即可。 然后添加文件。我这个例子是添加了Image文件夹下的图片资源 使用的时候&#xff0c;可以在代码…

MySQL学习笔记1(MySQL基础)

1.MySQL基础 1.数据库相关概念 ​ *数据库&#xff1a;存储数据的仓库&#xff0c;数据是有组织的进行存储 DtaBase(DB) ​ *数据管理系统&#xff1a;操纵和管理数据库的大型软件 DataBase Management System (DBMS) ​ *SQL&#xff1a;操作关系型数据库的编程语言&#…

【GNSS】GNSS开源相关代码汇总

仅作为笔者的学习笔记使用 参考&#xff1a;GNSS算法相关开源代码&#xff08;含多传感器融合相关项目&#xff09; - 知乎 (zhihu.com)

C语言本身不难,难得是应用场景很多

你学了C语言多半是要做项目的&#xff0c;这个过程中C语言是远远不够的&#xff0c;你把这部分难度加到C语言上&#xff0c;自然就难了在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区…

浅谈防火墙,IPS,APT威胁检测的互补性

在学习网络安全产品时发现很多产品的目的与功能大同小异都是防范非法流量或威胁&#xff0c;但是既然有产品的差异就有作用的目的的差异&#xff0c;下面浅谈一下三个网络安全产品的差异化与互补点 防火墙 传统防火墙主要是工作在二到四层&#xff0c;不会对报文的载荷进行检…

大家期待的「红米汽车」,可能真的要来了

不知道从啥时候开始&#xff0c;小米逐渐摘掉了那顶让人越看越顺眼的「亲民帽子」。 从最开始 1999 到后来 3999 甚至是 4999、5999&#xff0c;雷军口中的高端梦正在一步步实现。 前段时间小米首款汽车 SU7 上市&#xff0c;21.59-29.99 万元定价再次引来大批网友直呼&#…

串联滞后校正及matlab实现

syms b_1 Z[]; P[0,-10,-5]; K1500; G_0zpk(Z,P,K); %G_0为校正前系统开环传递函数 [num,den]tfdata(G_0); %求解b&#xff0c;T [Gm,Pm,wg_0,wc_0]margin(G_0); %Pm为校正前的幅值裕度, gamma60; %确定校正后的相角裕度 Phi_c-6; %校正后的截止频率下Gc(s)的相角&#xff0c;一…