STL中常见的算法及其应用(一)

news2024/11/26 16:39:11

总述:

一、常见的遍历算法 

1、for_each//遍历容器

函数原型:

for_each(iterator beg, iterator end, _func);

beg:开始迭代器;

end:结束迭代器;

_func:函数或者函数对象;

总结:for_each函数在STL中十分重要,需要熟练掌握

示例:

std::for_each 是 C++ 标准模板库中的一种算法,用于对容器中的每个元素应用一个函数。这是一个非常灵活的函数,可以用于执行多种操作,如打印容器中的元素、修改它们的值等。下面是一个使用 std::for_each 函数的示例代码,其中包括了对每个元素执行打印操作的用法。

#include <iostream>
#include <vector>
#include <algorithm> // 包含 for_each

int main() {
    // 创建一个向量并初始化
    std::vector<int> vec = {1, 2, 3, 4, 5};

    // 使用 for_each 打印向量的每个元素
    std::cout << "Vector elements: ";
    std::for_each(vec.begin(), vec.end(), [](int x) {
        std::cout << x << " ";
    });
    std::cout << std::endl;

    // 使用 for_each 修改向量的每个元素
    std::for_each(vec.begin(), vec.end(), [](int& x) {
        x *= 2; // 将每个元素乘以2
    });

    // 再次使用 for_each 打印修改后的向量元素
    std::cout << "Modified vector elements: ";
    std::for_each(vec.begin(), vec.end(), [](int x) {
        std::cout << x << " ";
    });
    std::cout << std::endl;

    return 0;
}

代码解释

  1. 头文件引入

    • <iostream> 用于输出。
    • <vector> 用于创建向量容器。
    • <algorithm> 包含 std::for_each 算法。
  2. 初始化向量

    • 创建并初始化一个 std::vector<int>
  3. 打印元素

    • 使用 std::for_each 遍历向量中的每个元素,并通过一个 lambda 表达式打印它们。for_each 的第一个和第二个参数分别是迭代器的范围,第三个参数是一个函数或可调用对象。
  4. 修改元素

    • 再次使用 std::for_each,这次是用一个修改元素值的 lambda 表达式,将每个元素乘以 2。这里 lambda 函数接受一个引用参数,以便直接修改向量中的元素。
  5. 打印修改后的元素

    • 修改后,再次使用 std::for_each 和一个打印 lambda 表达式来显示更新后的元素。

这段代码展示了 std::for_each 的两个常见用途:处理和显示元素、修改容器中的元素。通过 lambda 表达式,我们可以轻松地为每个元素指定操作,使得 std::for_each 非常灵活和强大。

 

2、transform函数

功能:搬运容器到另一个容器中(在搬运前目标容器必须先开辟空间,否则会报错)

函数原型:

transform(iterator beg1, iterator end1, iterator beg2, _func);

beg1:源容器开始迭代器

end1 源容器结束迭代器

beg2 目标容器开始迭代器

_func 函数或者函数对象

示例代码:

#include <iostream>
#include <vector>
#include <algorithm>  // 包含 transform

int main() {
    std

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

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

相关文章

如何利用ChatGPT撰写满分文案:技巧与实例解析

在当今社会&#xff0c;随着企业越来越重视宣传推广&#xff0c;文案写作已成为关键的营销手段之一。同时&#xff0c;人工智能的快速发展为文案创作提供了新的工具和方法。例如&#xff0c;ChatGPT这种基于自然语言处理的模型&#xff0c;在协助撰写多种文案方面展现出了极大的…

A4的PDF按A3打印

先用办公软件打开&#xff0c;比如WPS。 选择打印-属性。 纸张选A3&#xff0c;如果是双面打印&#xff0c;选短边装订&#xff0c;然后在版面-页面排版-每张页数&#xff08;N合1&#xff09;选2。 不同打印机的具体配置可能不一样&#xff0c;但大体都是这个套路。

【画图】读取无人机IMU数据并打印成log用matlab分析

一、修改IMU频率 原来的imu没有加速度信息&#xff0c;查看加速度信息的指令为&#xff1a; rostopic echo /mavros/imu/data 修改imu频率&#xff0c;分别修改的是 原始IMU数据话题 /mavros/imu/data_raw。飞控计算过后的IMU数据 /mavros/imu/data rosrun mavros mavcmd l…

算法提高之方格取数

算法提高之方格取数 核心思想&#xff1a;数字三角形模型 考虑同时走两条路 用f[i1][j1][i2][j2]表示两条路取值 因为两条路步数一定相同 即i1j1 i2j2 设为k 则f[k][i1][i2]即可表示两条路 k n*2 dp方法如图 #include <iostream>#include <cstring>#inclu…

【系统架构师】-选择题(十)

1、某计算机系统页面大小为2K&#xff0c;进程P1的页面变换表如下图所示&#xff0c;若P1要访问数据的逻辑地址为十六进制1B1AH&#xff0c;那么该逻辑地址经过变换后&#xff0c;其对应的物理地址应为十六进制 &#xff08;231AH&#xff09; 。 四位换一位 逻辑地址1B1AH对应…

基于SpringBoot实现各省距离Excel导出实战

目录 前言 一、列表及图表信息展示 1、数据过滤调整 2、信息列表及图表展示 3、Excel写入 二、界面可视化 1、Echarts图表和列表展示 2、城市详情和下载功能设计 三、成果展示 1、图表展示 2、部分城市数据分析 总结 前言 今天是五一黄金周假期第二天&#xff0c;不知…

JavaScript任务执行模式:同步与异步的奥秘

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

如何在postman上提交文件格式的数据

如何在postman上提交文件格式的数据 今天在写一个文件上传的功能接口时&#xff0c;想用postman进行提交&#xff0c;花了些时间才找到在postman提交文件格式的数据。记录一下吧&#xff01; 1.打开postman&#xff0c;选择POST提交方式&#xff0c;然后在Params那一行的Head…

「C/C++ 01」volatile关键字 和 修改const修饰的变量

目录 一、修改const修饰的局部变量 二、无法修改const修饰的全局变量 三、volatile关键字 面试题】 一、修改const修饰的局部变量 可以通过指针和强转来修改const修饰的局部变量。 #include <iostream> using namespace std;int main(void) {const int a 1;int* pa (in…

Android BINDER是干嘛的?

1.系统架构 2.binder 源码位置&#xff1a; 与LINUX传统IPC对比

【Redis深度专题】「核心技术提升」高级特性之Lua脚本执行机制的实现与探究

高级特性之Lua脚本执行机制的实现与探究 内容梗概什么是LuaLua的应用Lua的特点Redis引入Lua脚本Redis中引入Lua的原因Lua脚本的原子处理能力Lua减少网络开销Lua脚本复用与提高效率 Redis中Lua的常用命令指令&#xff1a;EVAL指令格式案例介绍Redis函数&#xff1a;call和pcallr…

[NSSCTF]prize_p1

前言 之前做了p5 才知道还有p1到p4 遂来做一下 顺便复习一下反序列化 prize_p1 <META http-equiv"Content-Type" content"text/html; charsetutf-8" /><?phphighlight_file(__FILE__);class getflag{function __destruct(){echo getenv(&qu…

能源监控新方案:IEC104转MQTT网关在新能源发电中的应用

需求背景 近些年&#xff0c;我国新能源产业快速发展&#xff0c;光伏、风电等新能源项目高速增长&#xff0c;新能源发电已经成为国家能源结构的重要组成部分。 打造数字化、智能化、信息化的电力物联网系统&#xff0c;实现光伏风电等新能源发电站的远程监控、远程维护是新能…

企业气候风险披露、报表词频、文本分析数据集合(2007-2022年)

01、数据介绍 企业气候风险披露是指企业通过一定的方式&#xff0c;将气候变化对其影响、自身采取的应对措施等信息披露出来。这有助于投资者更准确地评估企业价值&#xff0c;发现投资机会&#xff0c;规避投资风险。解企业在气候风险方面的关注度和披露情况。 可以帮助利益…

系统调用 int 86 的过程

该图借鉴与 Linux系统调用全过程详解-高性能服务器开发&#xff0c;向作者致敬。

WPF之创建无外观控件

1&#xff0c;定义无外观控件。 定义默认样式&#xff0c;在其静态构造函数中调用DefaultStyleKeyProperty.OverrideMetadata()。 //设置默认样式DefaultStyleKeyProperty.OverrideMetadata(typeof(ColorPicker), new FrameworkPropertyMetadata(typeof(ColorPicker))); 在项目…

【喜报】科大睿智为武汉博睿英特科技高质量通过CMMI3级评估咨询工作

武汉博睿英特科技有限公司是信息通信技术产品、建筑智慧工程服务提供商。其拥有专注于航空、政府、教育、金融等多行业领域的资深团队&#xff0c;及时掌握最新信息通信应用技术&#xff0c;深刻理解行业业务流程&#xff0c;擅于整合市场优质资源&#xff0c;积极保持与高校产…

06_电子设计教程基础篇(学习视频推荐)

文章目录 前言一、基础视频1、电路原理3、模电4、高频电子线路5、电力电子技术6、数学物理方法7、电磁场与电磁波8、信号系统9、自动控制原理10、通信原理11、单片机原理 二、科普视频1、工科男孙老师2、达尔闻3、爱上半导体4、华秋商城5、JT硬件乐趣6、洋桃电子 三、教学视频1…

日期类的模拟实现

1.定义一个日期类 有关类的定义&#xff0c;首先是需要声明共有类和私有类的成员函数和成员变量。 这里我分了三个文件写&#xff0c;分别有Date.h&#xff0c;Date.cpp&#xff0c;test.cpp using namespace std; class Date { private:int _year;int _month;int _day;publ…

IF67负载的纳米纤维膜材料

IF67负载的纳米纤维膜材料是一种结合了ZIF67&#xff08;一种沸石咪唑酯骨架结构材料&#xff09;和纳米纤维膜的材料。这种材料的制备方法通常涉及以下步骤&#xff1a; 制备含有ZIF67纳米晶体的纺丝液。 将该纺丝液与另一纺丝液&#xff08;如聚乙烯醇缩丁醛或聚氨酯的纺丝液…