当前位置: 首页 > news >正文

STL常用遍历算法

概述:

  • 算法主要是由头文件<algorithm> <functional> <numeric>组成。

  • <algorithm>是所有STL头文件中最大的一个,范围涉及到比较、 交换、查找、遍历操作、复制、修改等等

  • <numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数

  • <functional>定义了一些模板类,用以声明函数对象。

1 常用遍历算法

算法简介:

  • for_each //遍历容器
  • transform //搬运容器到另一个容器中

1.1 for_each

功能描述:

  • 实现遍历容器

函数原型:

  • for_each(iterator beg, iterator end, _func);

    // 遍历算法 遍历容器元素

    // beg 开始迭代器

    // end 结束迭代器

    // _func 函数或者函数对象

#include<iostream>
#include <vector>
#include <algorithm>
using namespace std;//常用遍历算法for_each//普通函数
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 < 10; i++){v.push_back(i);}for_each(v.begin(), v.end(), print01);cout << endl;cout << "---------------";cout << endl;for_each(v.begin(), v.end(), print02());
}int main()
{test01();return 0;
}

1.2 transform

功能描述:

  • 搬运容器到另一个容器中

函数原型:

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

//beg1 源容器开始迭代器

//end1 源容器结束迭代器

//beg2 目标容器开始迭代器

//_func 函数或者函数对象

#include<iostream>
#include <vector>
#include <algorithm>using namespace std;//常用算法遍历transformclass Transform
{
public:int operator()(int v){return v;}
};class print
{
public:void operator()(int val){cout << val << " ";}
};void test01()
{vector<int>v;for (int i = 0; i < 10; i++){v.push_back(i);}vector<int>vtarget;vtarget.resize(v.size());//目标容器必须提前开辟容器transform(v.begin(), v.end(), vtarget.begin(), Transform());for_each(vtarget.begin(), vtarget.end(),print());
}int main()
{test01();return 0;
}

搬运的目标容器必须要提前开辟空间,否则无法正常搬运

http://www.lryc.cn/news/481955.html

相关文章:

  • 前端开发中常见的ES6技术细节分享一
  • 行业类别-智慧城市-子类别智能交通-细分类别自动驾驶技术-应用场景城市公共交通优化
  • [High Speed Serial ] Xilinx
  • Unity学习笔记(3):场景绘制和叠层设置 Tilemap
  • 不吹不黑,客观理性深入讨论中国信创现状
  • NoSQL大数据存储技术测试(2)NoSQL数据库的基本原理
  • 「QT」几何数据类 之 QPoint 整型点类
  • 植物明星大乱斗5
  • 每日算法练习
  • 把握鸿蒙生态崛起机遇:开发者如何在全场景操作系统中脱颖而出
  • 字符串类型排序,通过枚举进行单个维度多个维度排序
  • figma的drop shadow x:0 y:4 blur:6 spread:0 如何写成css样式
  • 基于Matlab 疲劳驾驶检测
  • Linux内核.之 init文件,/init/main.c
  • CentOS系统中查看内网端口映射的多种方法
  • Mac中禁用系统更新
  • GoogLeNet-水果分类
  • 深度学习入门指南:一篇文章全解
  • java ssm 医院病房管理系统 医院管理 医疗病房信息管理 源码 jsp
  • 钩子函数的使用
  • 【Docker】自定义网络:实现容器之间通过域名相互通讯
  • 护理陪护系统|护理陪护软件|陪护软件
  • 苍穹外卖-账号被锁定怎么办?
  • webpack loader全解析,从入门到精通(10)
  • python机器人Agent编程——实现一个本地大模型和爬虫结合的手机号归属地天气查询Agent
  • 【动态规划】斐波那契数列模型总结
  • EasyUI弹出框行编辑,通过下拉框实现内容联动
  • 国产linux系统(银河麒麟,统信uos)使用 PageOffice 实现word文件在线留痕
  • 使用亚马逊 S3 连接器为 PyTorch 和 MinIO 创建地图式数据集
  • 自动化运维:提升效率与稳定性的关键技术实践