C++,stl,常用遍历查找算法

目录​​​​​​​

1.常用遍历算法

for_each

transform

2.常用查找算法

find 

find_if 

adjacent_find

binary_search

count

count_if


1.常用遍历算法

for_each

#include<bits/stdc++.h>
using namespace std;void print(int v)
{cout << v << ' ';
}class print2
{
public:void operator()(int v){cout << v << ' ';}
};int main()
{vector<bool> v;v.push_back(1);v.push_back(1);v.push_back(0);v.push_back(0);v.push_back(1);for_each(v.begin(),v.end(),print);cout << endl;//仿函数for_each(v.begin(),v.end(),print2());return 0;
}

 

transform

必须提前开辟空间 

#include<bits/stdc++.h>
using namespace std;class trans
{
public:int operator()(int v){return v + 200;}
};class print
{
public:void operator()(int v){cout << v << ' ';}
};int main()
{vector<bool> v;v.push_back(1);v.push_back(1);v.push_back(0);v.push_back(0);v.push_back(1);vector<int> v1;v1.resize(v.size());transform(v.begin(),v.end(),v1.begin(),trans());for_each(v1.begin(),v1.end(),print());
}

 

2.常用查找算法

find 

#include<bits/stdc++.h>
using namespace std;int main()
{vector<int> v;v.push_back(4);v.push_back(5);v.push_back(2);v.push_back(8);v.push_back(1);vector<int>::iterator it;it = find(v.begin(),v.end(),8);if(it != v.end()) cout << "找到了" << endl;
}

 

自定义数据类型 

#include<bits/stdc++.h>
using namespace std;class person
{
public:person(string name,int a){this -> name = name;this -> a = a;}bool operator==(const person &p){if(this -> name == p.name && this -> a == p.a)return true;else return false;}string name;int a;
};int main()
{vector<person> v;person p1("aa",99);v.push_back(p1);vector<person>::iterator it = find(v.begin(),v.end(),p1);if(it != v.end()) cout << "找到了" << endl;
}

 

find_if 

#include<bits/stdc++.h>
using namespace std;class dayu5
{
public:bool operator()(int v){return v > 5;}
};int main()
{vector<int> v;v.push_back(3);v.push_back(2);v.push_back(9);v.push_back(4);v.push_back(10);vector<int>::iterator it = find_if(v.begin(),v.end(),dayu5());if(it != v.end()) cout << "找到了" << endl;
}

adjacent_find

 

#include<bits/stdc++.h>
using namespace std;int main()
{vector<int> v;v.push_back(3);v.push_back(2);v.push_back(3);v.push_back(4);v.push_back(4);vector<int>::iterator it = adjacent_find(v.begin(),v.end());cout << *it << endl;
}

 

 

必须是有序的序列 

#include<bits/stdc++.h>
using namespace std;int main()
{vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);v.push_back(4);bool ret = binary_search(v.begin(),v.end(),3);cout << ret << endl;return 0;}

 

count

 

统计自定义数据类型数目时,要重载==符号 

#include<bits/stdc++.h>
using namespace std;int main()
{vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);v.push_back(4);int num = count(v.begin(),v.end(),4);cout << num << endl;return 0;
}

 

count_if

 

#include<bits/stdc++.h>
using namespace std;class dayu2
{
public:bool operator()(int v){return v > 2;}
};int main()
{vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);v.push_back(4);int num = count_if(v.begin(),v.end(),dayu2());cout << num << endl;return 0;
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Date类(Java)、SimpleDateFormat

一、Date Date代表的是日期和时间 import java.util.Date;public class Test {public static void main(String[] args) {//Date日期类的使用//1.创建一个Date对象&#xff1a;代表系统当前时间信息Date d new Date();System.out.println(d); //打印当前时间信息//2.拿到时间…

Spring AOP的实现方式

AOP基本概念 Spring框架的两大核心&#xff1a;IoC和AOP AOP&#xff1a;Aspect Oriented Programming&#xff08;面向切面编程&#xff09; AOP是一种思想&#xff0c;是对某一类事情的集中处理 面向切面编程&#xff1a;切面就是指某一类特定的问题&#xff0c;所以AOP可…

北邮复试刷题103. 二叉树的锯齿形层序遍历

103. 二叉树的锯齿形层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff0c;层与层之间交替进行&#xff09;。 示例 1&#xff1a;输入&#xff1a…

如何量化多样性?答:辛普森多样性指数(Simpson’s Diversity Index)

如何量化多样性&#xff1f;答&#xff1a;辛普森多样性指数&#xff08;Simpson’s Diversity Index&#xff09; 生物多样性指地球上各种生命的多样性&#xff0c;涵盖所有生命形式&#xff0c;从基因、细菌到所有生态系统&#xff0c;例如森林或珊瑚礁生态系统。 那么如何…

【C++】:哈希和哈希桶

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关哈希和哈希桶的知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通…

相机图像质量研究(18)常见问题总结:CMOS期间对成像的影响--CFA

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

Linux系统入门

目录 探索命令行 学习使用 man 寻找帮助 控制字符 统计代码行数 统计磁盘使用情况 在Linux下编写 Hello World 程序 使用重定向 使用Makefile管理工程 Unix哲学 探索命令行 Linux命令行中的命令使用格式都是相同的: 命令名称 参数1 参数2 参数3 ... 参数之间用任意…

.NET Core WebAPI中封装Swagger配置

一、创建相关文件 创建一个Utility/SwaggerExt文件夹&#xff0c;添加一个类 二、在Program中找到Swagger相关配置信息 三、添加方法&#xff0c;在Program中调用 在SwaggerExt类中添加方法&#xff0c;将相关配置添写入 /// <summary> /// swagger配置 /// </sum…

ORB-SLAM 三角化

特征点三角化(Triangulation)是是双目视觉中一个基础算法&#xff0c;也是VSLAM中一个非常基础的问题,它是根据特征点在多个相机下的投影恢复出特征点的3D坐标。 使用SVD求解方程组。

为什么需要关注差分阻抗

差分对的主要目的是为了保持正确的差分阻抗&#xff0c;因此&#xff0c;必须了解差分阻抗的含义&#xff0c;差分阻抗是每条走线奇模阻抗的两倍&#xff0c;而每条走线的单端阻抗&#xff08;SE, single-ended&#xff09;&#xff0c;仅当差分线内没有对内耦合时&#xff0c;…

红色警戒 3 修改游戏速度

原文&#xff1a;https://blog.iyatt.com/?p13852 红警 2 是有提供游戏速度修改的&#xff0c;红警 3 没有&#xff0c;而且游戏速度似乎和 FPS 关联的&#xff0c;在配置低一些的电脑上会变慢&#xff0c;FPS 也降低&#xff0c;我电脑上开最高画质 FPS 不超过 30&#xff0c…

SAP PP学习笔记- 豆知识03 - 品目的外部购买发注(购买发注)和内部购买发注(內制)的控制

其实也是在品目类型的Customize里面。 Customize上的设置如何影响界面。其实挺复杂的&#xff0c;一点点来吧。 1&#xff0c;外部购买发注 外部购买发注就是咱们认识的购买发注。 - 0 外部购买发注不可 - 1 外部购买发注可&#xff08;有警告Message&#xff09; - 2 外部…