第九层(11):STL之常用遍历算法

news2024/11/16 15:27:53

文章目录

  • 前情回顾
  • 常用算法
    • 常用遍历算法
      • for_each
      • transform
  • 下一座石碑

🎉welcome🎉
✒️博主介绍:一名大一的智能制造专业学生,在学习C/C++的路上会越走越远,后面不定期更新有关C/C++语法,数据结构,算法,Linux,ue5使用,制作游戏的心得,和大家一起共同成长。
✈️C++专栏:C++爬塔日记
😘博客制作不易,👍点赞+⭐收藏+➕关注

前情回顾

在上一块石碑中,我学到了函数对象,同时下一块石碑也显露出来…

  • 🚄上章地址:第九层(10):STL之函数对象

常用算法

  • 算法主要是由头文件:
#include<algorithm>
#include<functional>
#include<numeric>
  • 其中algorithm是最大的一个头文件,它其中包含是比较,交换,查找,遍历,复制等等,functional就是内建函数对象,numeric体积很小,其中有一些简单的数学运算的模板函数

常用遍历算法

  • 常用的遍历算法有两种:
for_each//遍历容器
transform//搬运容器到另一个容器

for_each

for_each(beg,end,_func)
  • beg指的是开始迭代器,从哪里去遍历,end指结束迭代器,到哪里结束,_func表示一个函数,是在遍历的时候进行的操作,例如打印,可以用函数对象

使用:

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

void print(int a)
{
	cout << a << " ";
}
void test1()
{
	vector<int> v;
	for (int i = 0; i < 10; ++i)
	{
		v.push_back(i);
	}
	for_each(v.begin(), v.end(), print);
	cout << endl;
}
int main()
{
	test1();
	return 0;
}

在这里插入图片描述

transform

transform(beg1,end1,beg2, _func)
  • beg1是原容器的其实迭代器,end1是的结束迭代器,beg2是目标容器的开始迭代器,_func在这里为函数或者函数对象,可以在搬运途中对搬运的元素进行操作,比如加多少减多少,这里有一个需要注意的地方,目标i容器要记得提前开辟好容器空间,保证能放下原容器的元素

使用:

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

int add(int a)//对拷贝过来的数进行加一百的操作
{
	return a += 100;
}
void print(int a)
{
	cout << a << " ";
}
void test1()
{
	vector<int> v;
	for (int i = 0; i < 10; ++i)
	{
		v.push_back(i);
	}
	for_each(v. begin(), v.end(), print);
	cout << endl;
	vector<int> v1;
	v1.resize(v.size());//保证可以放下原容器
	transform(v.begin(), v.end(), v1.begin(), add);
	for_each(v1.begin(), v1.end(), print);
	cout << endl;
}
int main()
{
	test1();
	return 0;
}

在这里插入图片描述

下一座石碑

  • 这座石碑倒下了,露出了下一座石碑…

😘预知后事如何,关注新专栏,和我一起征服C++这座巨塔
🚀专栏:C++爬塔日记
🙉都看到这里了,留下你们的👍点赞+⭐收藏+📋评论吧🙉

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

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

相关文章

Git基本信息和日常操作记录

文章目录一、Git1、干啥的2、Git 与svn 的区别二、Git操作记录注意2.1、配置别名2.2、初始化本地git仓库&#xff08;创建新仓库&#xff09;2.3、配置用户名2.4、配置邮件2.4、clone远程仓库2.5、查看配置2.6、暂存修改撤回2.7、配置 git log 日志快捷命令2.8、git 自定义配置…

一刷代码随想录——二叉树

理论基础【1】分类满二叉树完全二叉树优先级队列其实是一个堆&#xff0c;堆就是一棵完全二叉树&#xff0c;同时保证父子节点的顺序关系。二叉搜素树二叉搜索树是有数值的&#xff0c;二叉搜索树是一个有序树。平衡二叉搜素树&#xff08;AVL&#xff09;C中map、set、multima…

Allegro走线规则管理器中网络不会被同步高亮的解决办法

Allegro走线规则管理器中网络不会被同步高亮的解决办法 在用Allegro做PCB设计的时候,在走线的时候,规则管理器中的网络能被高亮起来的话会十分直观,尤其是在做等长设计的时候。 但是有时候会遇到走线的时候,规则管理器中的网络不会同步高亮的情况 如下图: 下面介绍遇到这…

Baklib教您:如何构建有效的帮助中心知识库?

好的帮助中心网站架构良好并精心呈现&#xff0c;使客户可以轻松浏览网站并找到他们要搜索的内容。帮助中心应始终易于搜索&#xff0c;为客户提供品牌知识库的可访问版本&#xff0c;该帮助中心应以用户体验为核心。该站点通常会包含常见问题解答、文章和各种说明&#xff0c;…

SNMP源码分析

源码下载 http://www.net-snmp.org/download.html 源码目录结构 net-snmp程序逻辑 &#xff08;1&#xff09;main主函数 #ifdef WIN32SERVICE //windows系统下使用snmp static int SnmpDaemonMain(int argc, TCHAR * argv[]) #else //linux系统 int main(int argc, char …

吊打面试官,四面拿到阿里、字节 offer 后我还是选择了美团

祸兮福之所倚福兮祸之所伏 上学的时候对这句话不以为然&#xff0c;但是在社会上走的时间越长越觉得有道理 前不久好兄弟和领导闹矛盾裸辞了&#xff0c;身为好兄弟的我总不能干看着吧&#xff0c;总要帮他找工作的。(你们应该不会想我和他一起裸辞吧) 大学的师兄有好几个在大…

西门子200smart与组态王之间无线Profinet通信实例

在实际系统中&#xff0c;车间里分布多台PLC&#xff0c;需要用上位机软件集中控制。通常所有设备距离在几十米到上百米不等。在有通讯需求的时候&#xff0c;如果布线的话&#xff0c;工程量较大且不美观&#xff0c;这种情况下比较适合采用无线通信方式。本方案以组态王和2台…

19 | Rancher 使用介绍(管理 K8s 平台)

目录1 Rancher简介2 Rancher 安装2.1查看k8s的版本2.2 通过 Docker 来进行安装2.3 在 Rancher 的界面上绑定 K8s2.3.1 配置 Kubernetes 集群2.3.2 导入集群2.3.3 集群列表3 Rancher 上部署应用1 Rancher简介 Rancher 提供的功能&#xff1a; 支持 K8s 集群的身份验证和基于角色…

pod内时间时区与宿主机不一致

原因&#xff1a;pod内默认时区是UTC&#xff0c;宿主机时区是CST解决方式&#xff1a;一&#xff0c;如果仅仅是运行一个jar文件&#xff0c;可以使用如下命令&#xff1a;java -jar -Duser.timezoneGMT08 xxx.jar在k8s的Deployment文件中&#xff0c;加入上述JVM启动参数&…

一文读懂I/O模型

什么是IO呢&#xff1f;什么是阻塞非阻塞IO&#xff1f;什么是同步异步IO&#xff1f;什么是IO多路复用&#xff1f;select/epoll跟IO模型有什么关系&#xff1f;有几种经典IO模型呢&#xff1f;BIO、NIO、AIO到底有什么区别的&#xff1f; 如果这些问题&#xff0c;你都能很好…

hjr-微服务(六):如何保障服务稳定性

服务稳定是一个特别大的话题&#xff0c;一般我们用SLA描述服务的质量 SLA一般有99.9 &#xff0c;99.99&#xff0c;就是我们常说的三个9&#xff0c;四个9 有两个纬度衡量 时间纬度 请求纬度 请求的成功率计算方式&#xff1a;SL A 成功请求/&#xff08;成功请求请求失败…

【计算机网络】IP协议

网络层 在复杂的网络环境中寻找一条合适的路径传输数据 IP协议 IP指网际互连协议&#xff0c;Internet Protocol的缩写&#xff0c;是TCP/IP体系中的网络层协议。设计IP的目的是提高网络的可扩展性&#xff1a;一是解决互联网问题&#xff0c;实现大规模、异构网络的互联互通…

【先进设备】仅3mm!超薄款,足底压力步态测量分析系统

产品介绍足底压力步态测量分析系统是一套可用于采集人体足底压力的装置系统&#xff0c;其采用了高密度薄膜压力传感器矩阵&#xff0c;实现足底压力分布数据自动采集和分析&#xff0c;兼具大量程、高采集频率、高精度、高可靠性等特点&#xff0c;可以采集不同疾病的步态及足…

表白生日祝福和3D表白相册

作者&#xff1a;BSXY_19计科_陈永跃BSXY_信息学院注&#xff1a;未经允许禁止转发任何内容表白生日祝福和3D表白相册1、效果与展示2、资源下载3、PC版本生日祝福4、手机版本生日祝福5、动态相册6、如何给别人看1、效果与展示 好友给了我一个链接&#xff0c;我点看一看原来都…

【操作系统】2、进程管理

文章目录二、进程管理2.1 进程、线程的基本概念2.1.1 进程的组成和特性2.1.2 进程的状态和转换2.1.3 进程控制(理解)2.1.4 线程的概念2.1.5 线程的实现方式2.1.5.1 用户级线程2.1.5.2 内核级线程2.1.5.3 多线程模式2.1 6 线程的状态与转换2.2 进程同步2.2.1 概念2.2.2 进程互斥…

gitee通过idea上传新的项目流程

gitee通过idea上传新的项目流程今天开始分享 一、gitee服务端处理 1、登录gitee 服务端&#xff0c;创建仓库 2、点击创建 点击创建 3、创建完成 4、点击复制此仓库的地址&#xff1a;https://gitee.com/nandao1/demo2.git 下面idea会用到 二、idea客户端处理 1、创建demo…

物流行业有什么重要的指标,如何进行数据分析?

大数据是信息时代的典型特征&#xff0c;即通过收集、输入、储存、管理、分析对传统数据进行整合&#xff0c;在互联网的发展中其重要作用。目前大数据已经应用在很多领域中&#xff0c;并影响着各行各业&#xff0c;也有越来越多的行业开始关注大数据&#xff0c;例如“菜鸟网…

C语言数组指针(指向数组的指针)详解

数组&#xff08;Array&#xff09;是一系列具有相同类型的数据的集合&#xff0c;每一份数据叫做一个数组元素&#xff08;Element&#xff09;。数组中的所有元素在内存中是连续排列的&#xff0c;整个数组占用的是一块内存。以int arr[] { 99, 15, 100, 888, 252 };为例&am…

Homekit智能家居DIY-智能触摸面板开关

触摸开关&#xff0c;即通过触摸方式控制的墙壁开关&#xff0c;其感官场景如同我们的触屏手机&#xff0c;只需手指轻轻一点即可达到控制电器的目的&#xff0c;随着人们生活品质的提高&#xff0c;触摸开关将逐渐将换代传统机械按键开关。 触摸开关控制原理 触摸开关我们把…

VL6 多功能数据处理器

一、题目根据指示信号select的不同&#xff0c;对输入信号a,b实现不同的运算。输入信号a,b为8bit有符号数&#xff0c;当select信号为0&#xff0c;输出a&#xff1b;当select信号为1&#xff0c;输出b&#xff1b;当select信号为2&#xff0c;输出ab&#xff1b;当select信号为…