12.C++常用的算法_遍历算法

文章目录

    • 遍历算法
      • 1. for_each()
        • 代码工程
        • 运行结果
      • 2. transform()
        • 代码工程
        • 运行结果
      • 3. find()
        • 代码工程
        • 运行结果

遍历算法

1. for_each()

有两种方式:
1.普通函数
2.仿函数

代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

/*普通函数*/
void print01(int val)
{
	cout << val << " ";
}

/*仿函数*/
class print02
{
public:
	void operator()(int val)
	{
		cout << val << " ";
	}
};

void test01()
{
	vector<int>v;

	for (int i = 0; i < 5; i++)
	{
		v.push_back(i);
	}

	/*普通函数*/
	for_each(v.begin(), v.end(), print01);
	cout << endl;

	/*仿函数*/
	for_each(v.begin(), v.end(), print02());
	cout << endl;

	return;
}


int main()
{
	test01();


	return 0;
}

运行结果

在这里插入图片描述

2. transform()

要注意:需要提前给目标容器开辟空间

代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

class print
{
public:
	void operator()(int val)
	{
		cout << val << " ";
	}
};

class Transform
{
public:
	int operator()(int val)
	{
		return val;
	}
};

void test01()
{
	vector<int>v;

	for (int i = 0; i < 5; i++)
	{
		v.push_back(i);
	}

	vector<int>vTarget;
	vTarget.resize(v.size());/*目标容器需要提前开辟空间*/

	transform(v.begin(), v.end(), vTarget.begin(), Transform());

	
	for_each(v.begin(), v.end(), print());
	cout << endl;

	for_each(vTarget.begin(), vTarget.end(), print());
	cout << endl;

	return;
}


int main()
{
	test01();

	return 0;
}

运行结果

在这里插入图片描述

3. find()

要注意:bool operator==(const Person &p)参数里要加const修饰

代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>

using namespace std;

class Person
{
public:
	Person(string name, int age)
	{
		m_name = name;
		m_age = age;
	}

	bool operator==(const Person &p)
	{
		if (this->m_name == p.m_name && this->m_age == p.m_age)
		{
			return true;
		}
		else
		{
			return false;
		}
	}

	string m_name;
	int m_age;
};
void test01()
{
	vector<int>v;

	for (int i = 0; i < 5; i++)
	{
		v.push_back(i);
	}

	/*在v容器中查找5这个元素*/
	vector<int>::iterator pos = find(v.begin(), v.end(), 4);

	if (pos == v.end())
	{
		cout << "没找到该元素" << endl;
	}
	else
	{
		cout << "找到该元素,为:" << *pos << endl;
	}

	return;
}

void test02()/*测试自定义数据类型*/
{
	Person p1("刘备", 26);
	Person p2("曹操", 30);
	Person p3("赵云", 28);

	Person pp("赵云", 28);

	vector<Person>v;

	v.push_back(p1);
	v.push_back(p2);
	v.push_back(p3);

	vector<Person>::iterator pos = find(v.begin(), v.end(), pp);

	if (pos == v.end())
	{
		cout << "没找到该元素" << endl;
	}
	else
	{
		cout << "找到该元素" << "名字: " << pos->m_name << "  年龄:" << pos->m_age << endl;
	}

	return;
}

int main()
{
	test01();

	cout << endl;

	test02();

	return 0;
}

运行结果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构之树的性质总结

节点的度&#xff1a;该节点拥有的孩子个数 叶子节点&#xff1a;度为0的节点 层数&#xff1a;根节点为第一层&#xff0c;根的子节点为第二层&#xff0c;以此类推 所有树的性质&#xff1a;所有节点的总度数等于节点数减一 完全m叉树性质 完全m 叉树&#xff0c;节点的…

【Canvas与艺术】绘制磨砂黄铜材质Premium Quality徽章

【关键点】 渐变色的使用、斜纹的实现、底图的寻觅 【成果图】 ​​​​​​​ 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><tit…

若依Vue3:新一代前后端分离权限管理系统

随着技术的不断进步&#xff0c;前后端分离的开发模式逐渐成为主流&#xff0c;特别是在构建权限管理系统时。在这样的背景下&#xff0c;若依Vue3应运而生&#xff0c;作为基于Spring Boot、Spring Security、JWT、Vue3、Vite和Element Plus的全新解决方案&#xff0c;它在技术…

Ubuntu20.04安装ROS过程记录以及常见报错处理

sudo sh -c ‘echo “deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main” > /etc/apt/sources.list.d/ros-latest.list’ sudo apt-key adv --keyserver ‘hkp://keyserver.ubuntu.com:80’ --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt-…

linux启动流程(s3c2400)

概述 大致流程&#xff1a;内核&#xff08;kernel&#xff09;都是由bootloader程序引导启动的&#xff0c;所以我们应该先烧进去bootloader程序。然后可以通过保存的内核代码或者通过远程连接&#xff08;nfs/tftp&#xff09;的主机下载再运行&#xff0c;再挂载根文件系统。…

ABAP 前导0的处理

前导0这个东西真的很烦&#xff0c;经常因为前导0导致连接条件有问题&#xff0c;出不来数据&#xff0c;这里就总结一下前导0 在sql语句中的添加和去除 文章目录 ABAP 前导0的处理添加前导0-自适应运行结果 去除前导0方法一、使用SUBSTRING截取运行结果 方法二、去零法运行结…

小白新手学习 Python 使用哪个 Linux 系统更好?

对于小白新手学习Python&#xff0c;选择哪个Linux系统是一个很重要的问题&#xff0c;因为不同的Linux发行版&#xff08;distribution&#xff09;有着不同的特点、优势和适用场景。在选择时&#xff0c;需要考虑到易用性、学习曲线、社区支持等因素。 Ubuntu Ubuntu 是一个…

【AcWing】蓝桥杯集训每日一题Day16|哈希|FloodFill算法|字典序最小|映射|1402.星空之夜(C++)

1402.星空之夜 1402. 星空之夜 - AcWing题库难度&#xff1a;中等时/空限制&#xff1a;1s / 64MB总通过数&#xff1a;3415总尝试数&#xff1a;7434来源&#xff1a;usaco training 5.1算法标签Flood Fill哈希DFSBFS 题目内容 夜空深处&#xff0c;闪亮的星星以星群的形式出…

Spring Cloud系列(二):Eureka Server应用

系列文章 Spring Cloud系列(一)&#xff1a;Spirng Cloud变化 Spring Cloud系列(二)&#xff1a;Eureka Server应用 目录 前言 注册中心对比 Nacos Zookeeper Consul 搭建服务 准备 搭建 搭建父模块 搭建Server模块 启动服务 测试 其他 前言 前面针对新版本的变化有了…

Linux--进程的概念(二)

目录 一、进程的优先级1.1 基本概念1.2 查看进程优先级1.3 PRI&NI1.4 如何更改进程的优先级1.4.1 用top命令更改进程的nice1.4.2 用renice命令更改进程的nice 1.5 其他概念 二、环境变量2.1 基本概念2.2 常见的环境变量2.3 查看环境变量2.3.1 测试PATH2.3.2 测试HOME2.3.3 …

安全操作代码优化思路

理论依据 数据增强和样本选择 在训练阶段&#xff0c;您可以考虑添加数据增强来提升模型的鲁棒性和泛化能力。针对人脸检测任务&#xff0c;可以尝试以下改进&#xff1a; 对输入图像进行随机裁剪、缩放、旋转、翻转等数据增强操作&#xff0c;以增加数据的多样性。 使用难样…

【堡垒机】堡垒机的介绍

目前&#xff0c;常用的堡垒机有收费和开源两类。 收费的有行云管家、纽盾堡垒机&#xff1b; 开源的有jumpserver&#xff1b; 这几种各有各的优缺点&#xff0c;如何选择&#xff0c;大家可以根据实际场景来判断 什么是堡垒机 堡垒机&#xff0c;即在一个特定的网络环境下&…

革命性突破:Stability AI发布全新12B参数Stable LM 2模型,颠覆AI界!

Stability AI已推出其Stable LM 2语言模型系列的最新成员&#xff1a;一个120亿参数的基础模型和一个经过指令调优的变体。这些模型在七种语言上训练&#xff0c;包括英语、西班牙语、德语、意大利语、法语、葡萄牙语和荷兰语&#xff0c;训练数据达到了令人印象深刻的两万亿个…

JavaScript(1)神秘的编程技巧

大家都感兴趣的箭头函数 箭头函数在许多场景中都可以发挥作用&#xff0c;尤其适用于简化函数声明和提高代码的可读性。以下是箭头函数可以使用的一些常见方面&#xff1a; &#xff08;1&#xff09;回调函数&#xff1a; 箭头函数特别适合作为回调函数&#xff0c;例如在事…

【教程】App打包成IPA文件类型的四种方法

摘要 本教程总结了将App应用程序打包为IPA包的四种常用方法&#xff0c;包括Apple推荐的方式、iTunes拖入方法、自动编译脚本和解压改后缀名方法。每种方法都有其特点和适用场景&#xff0c;在实际开发中可以根据需求选择合适的方式进行打包。通过本教程&#xff0c;您将了解到…

微服务(狂神)

什么是微服务&#xff1a; 微服务方案&#xff1a; 1. SpringCloud NetFlix 2. Dubbo 3. SpringCloud Alibaba 解决了什么问题&#xff1a; 1. 服务过多&#xff0c;客户端怎么访问 2. 服务过多&#xff0c;服务间怎么传值 3. 服务过多&#xff0c;如何治理 4. 服务过多…

【随笔】Git 高级篇 -- 最近标签距离查询 git describe(二十一)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

JVM基础第一篇

内存结构 程序计数器 1.定义 在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;每个线程都有一个独立的程序计数器&#xff0c;它是线程私有的&#xff0c;不会被线程切换所影响。 2.作用 记住下一条jvm指令的执行地址 3.特点 是线程私有的不会存在内存溢出 虚拟机…

nginx配置证书和私钥进行SSL通信验证

文章目录 一、背景1.1 秘钥和证书是两个东西吗&#xff1f;1.2 介绍下nginx配置文件中参数ssl_certificate和ssl_certificate_key1.3介绍下nginx支持的证书类型1.4 目前nginx支持哪种证书格式&#xff1f;1.5 nginx修改配置文件目前方式也会有所不同1.6 介绍下不通格式的证书哪…

【DM8】序列

创建序列 图形化界面创建 DDL CREATE SEQUENCE "TEST"."S1" INCREMENT BY 1 START WITH 1 MAXVALUE 100 MINVALUE 1;参数&#xff1a; INCREMENT BY < 增量值 >| START WITH < 初值 >| MAXVALUE < 最大值 >| MINVALUE < 最小值…