C++ std::find函数 容器元素查找

简介

std::find函数是C++标准库内非常实用的一个函数,主要用于在给定范围内查找某个元素,如果找到该元素,则返回指向该元素的迭代器;如果没有找到,则返回指向范围末尾的迭代器(即 end() )。

find函数原型

std::find在头文件algorithm

template< class InputIt, class T >  
InputIt find( InputIt first, InputIt last, const T& value );
  • find函数是一个模板函数
  • InputIt first 查询范围的开始迭代器(类似begin()
  • InputIt last 查询范围的结束迭代器(类似 end()
  • const T& value 要查询的值

返回值

  • 如果找到了值 value,则返回一个迭代器,指向找到的该值的第一个匹配项。
  • 如果没有找到,则返回 last 迭代器。

示例代码

#include <iostream>  
#include <vector>  
#include <algorithm> // 包含 std::find  int main() {  std::vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8, 9};  // 查找元素 5  auto it = std::find(vec.begin(), vec.end(), 5);  if (it != vec.end()) {  std::cout << "找到元素 5,位置:" << std::distance(vec.begin(), it) << std::endl;  } else {  std::cout << "未找到元素 5" << std::endl;  }  // 查找元素 10(不存在)  it = std::find(vec.begin(), vec.end(), 10);  if (it == vec.end()) {  std::cout << "未找到元素 10" << std::endl;  }  return 0;  
}

注意事项

  • std::find 对范围内的元素进行顺序查找,时间复杂度为 O(n),其中 n 是范围内的元素数量。
  • std::find 可以用于任何支持随机访问迭代器、双向迭代器或前向迭代器的容器。

find_if函数原型

std::find_iffind一样在头文件algorithm

template< class InputIt, class UnaryPredicate >  
InputIt find_if( InputIt first, InputIt last, UnaryPredicate p );
  • InputIt first, InputIt last:这两个参数定义了要搜索的范围,其中 first 是指向范围开始的迭代器,last 是指向范围结束(但不包括该位置)的迭代器。
  • UnaryPredicate p:这是一个一元谓词函数,它接受范围中的一个元素作为参数,并返回一个布尔值。如果谓词对某个元素返回 true,则搜索停止,并返回指向该元素的迭代器。

返回值

  • 如果找到了满足条件的元素,则返回指向该元素的迭代器。
  • 如果没有找到满足条件的元素,则返回 last 迭代器。

代码示例

#include <iostream>  
#include <vector>  
#include <algorithm> // 包含 std::find_if  int main() {  std::vector<int> vec = {1, 5, 10, 15, 20};  // 使用 std::find_if 和 lambda 表达式查找第一个大于 10 的元素  auto it = std::find_if(vec.begin(), vec.end(), [](int i) {  return i > 10;  });  if (it != vec.end()) {  std::cout << "找到的元素:" << *it << std::endl;  } else {  std::cout << "未找到大于 10 的元素" << std::endl;  }  return 0;  
}

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

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

相关文章

Elasticsearch:一次生产集群 ES Watcher 失效的深度排查与分析 - 全过程剖析与解决方案

作者&#xff1a;尚雷&#xff0c;TechTalk 技术交流社区创办者 一次生产集群 ES Watcher 失效的深度排查与分析 全过程剖析与解决方案​​ 一、Elasticsearch Watcher 介绍 1.1 Watcher 概念概述 Watcher 是 Elasticsearch 提供的一项监控和告警服务&#xff0c;允许用户定义…

末端回路漏电监测仪为何不可或缺?

末端回路漏电监测仪 接地故障保护器 智能电力继电器 智能型剩余电流继电器 智能动作保护器 在2022年8月14日一个寻常的午后&#xff0c;庄南地的一片豆角田边&#xff0c;发生了一场令人痛心的意外。杨某与其父亲杨某某正忙于灌溉作物&#xff0c;却不料&#xff0c;一场本可避…

Vue3.0组合式API:依赖注入provide和inject实现跨层组件的通信

Vue3.0组合式API系列文章&#xff1a; 《Vue3.0组合式API&#xff1a;setup()函数》 《Vue3.0组合式API&#xff1a;使用reactive()、ref()创建响应式代理对象》 《Vue3.0组合式API&#xff1a;computed计算属性、watch监听器、watchEffect高级监听器》 《Vue3.0组合式API&…

TypeScript异常处理

1.异常的概念 程序运行中意外发生的情况就成为异常 例子&#xff1a; //除法运算function chu(num1:number,num2:number){if(num20){//throw 抛出异常throw new Error(除数不能为零)}let num:numbernum1/num2console.log(num) }//程序出现异常后会停止运行// 捕获异常try{ /…

论文《Mixture of Weak Strong Experts on Graphs》笔记

【Mowst 2024 ICLR】论文提出了一种新的图神经网络架构&#xff0c;称为Mixture of weak and strong experts&#xff08;Mowst&#xff09;&#xff0c;通过将轻量级的多层感知机&#xff08;MLP&#xff09;作为弱专家和现成的GNN作为强专家相结合&#xff0c;以处理图中的节…

Linux云计算 |【第四阶段】NOSQL-DAY1

主要内容&#xff1a; NoSQL概述&#xff08;RDBMS、NoSQL&#xff09;、部署Redis服务、Redis数据类型&#xff08;字符串、散列类型、列表类型、集合类型、有序集合类型&#xff09;、Redis其它操作命令、修改Redis服务运行参数、部署支持PHP和Redis的Nginx服务器 一、NoSQL…

4G模组SIM双卡切换是徒增成本,还是未雨绸缪?

初学开发的小伙伴提出疑问&#xff1a;手机双卡可以理解&#xff0c;物联网设备有必要双卡吗&#xff0c;会不会太浪费&#xff1f; 但在实际应用中&#xff0c;双卡是必需的。 在使用4G模组双卡功能的场景下&#xff0c;切换卡槽更是一个关键环节——关乎设备在不同网络环境…

【设计模式-享元】

Flyweight Pattern&#xff08;享元模式&#xff09; 是一种结构型设计模式&#xff0c;旨在通过共享对象来减少内存使用和提高性能。享元模式特别适用于需要大量相似对象的场景&#xff0c;可以有效地减少内存开销。 核心思想 享元模式通过将对象的共享部分&#xff08;共享…

关于单片机的技术原理及应用

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于单片机的技术原理及应用的相关内容&…

ANSYS Workbench蜂窝板泰森多边形Voronoi结构建模

在ANSYS Workbench内基于Voronoi算法建立泰森多边形蜂窝状结构板模型可采用CAD Voronoi插件建模后将模型导入。 在插件内设置好模型参数后运行&#xff0c;插件会自动在CAD内完成Voronoi图形的绘制。 将长方形与Voronoi晶格分别生成面域并做差集&#xff0c;形成Voronoi框架…

【JAVA开源】基于Vue和SpringBoot的校园美食分享平台

本文项目编号 T 033 &#xff0c;文末自助获取源码 \color{red}{T033&#xff0c;文末自助获取源码} T033&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

多层感知机paddle

多层感知机——paddle部分 本文部分为paddle框架以及部分理论分析&#xff0c;torch框架对应代码可见多层感知机 import paddle print("paddle version:",paddle.__version__)paddle version: 2.6.1多层感知机&#xff08;MLP&#xff0c;也称为神经网络&#xff0…

Visual Studio-X64汇编编写

纯64位汇编&#xff1a; includelib ucrt.lib includelib legacy_stdio_definitions.lib includelib user32.libextern printf:proc extern MessageBoxA:proc.data szFormat db "%s",0 szHello db "HelloWorld",0 szRk db "123",0.code start p…

鸿蒙生态应用

鸿蒙生态应用开发核心概念 HarmonyOS 应用&#xff1a;使用 HarmonyOS SDK 开发的应用程序&#xff0c;能够在华为终端设备 &#xff08;如&#xff1a;手机、平板等&#xff09;上运行&#xff0c;其有两种形态&#xff1a; ⚫ 传统方式的需要安装的 App。 ⚫ 轻量级&#xf…

碎纸片的自动拼接复原技术

摘要&#xff1a;破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。目前发现对碎纸片的拼接大部分由人工完成&#xff0c;准确率较高&#xff0c;但耗费大量人力财力及时间&#xff0c;效率很低。随着计算机技术的发展&#xff0c;人们试图…

java 解析excel

在Java中解析Excel文件&#xff0c;可以使用Apache POI库。以下是一个简单的例子&#xff0c;展示如何使用Apache POI读取一个Excel文件&#xff08;假设为.xlsx格式&#xff09;的内容。 首先&#xff0c;确保你的项目中包含了Apache POI的依赖。如果你使用Maven&#xff0c;…

结构体易忘点

结构体初始化 当我们去初始化一个结构体的时候&#xff0c;我们常常会按变量顺序初始化&#xff0c;但其实也可以不按顺序&#xff0c;同时也可以部分数据初始化。 结构体对齐 结构体里面的成员有一定的对齐规则&#xff0c;他不是每一个空间都存着有效数据的&#xff0c;有些…

综合时如何计算net delay?

在PR阶段&#xff0c;互连线的延迟可以通过抽取net的rc值计算得到。而在综合阶段&#xff0c;因为没有实际的布局布线&#xff0c;便无法去抽取net上的rc值。那么&#xff0c;线负载模型&#xff08;wire load model&#xff09;便派上用场了。 所谓线负载模型&#xff0c;就是…

力扣上刷题之C语言实现(数组)

一. 简介 本文记录一下力扣的逻辑题。主要是数组方面的&#xff0c;使用 C语言实现。 二. 力扣上刷题之C语言实现 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target的那 两个 整数&#xff0c;并返回它们的数…

uni-app安装插件

1.通过插件市场安装https://ext.dcloud.net.cn 打开HBuilderX编辑器。 点击菜单栏中的“工具”->“插件安装”。 这里会看到已安装插件和安装新插件两个选项卡&#xff0c;点击安装新插件&#xff0c; 能看到一些核心插件&#xff0c;如果所需要的插件在核心插件里面有&…