C++ 泛型算法 std::find() ,用于在数组或标准库容器中查找指定元素

2023-10-31

find() 函数是一个 泛型算法,可以用于操作所有STL容器。它用于在数组或标准库容器(如vector,map)中查找指定元素,查找成功则返回一个指向指定元素的迭代器,查找失败则返回end迭代器。(注意不是返回 true or false)

代码示例一,find() 用于vector:

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

int main()
{
	vector<int> num_list = { 2,4,6,8,10,12 };
	int find_num = 8;    //要查找的元素,类型要与vector中的元素类型一致
	vector<int>::iterator num = find(num_list.begin(), num_list.end(), find_num);  //返回一个迭代器指针

	if (num != num_list.end())   //查找成功
	{
		cout << "元素 " << *num << " 在num_list中"<<endl;   //注意指针的输出方式
		cout << "其索引为 " << distance(num_list.begin(), num) << endl;   
		//distance()函数用于计算两个迭代器表示的范围内包含元素的个数
	}
	else
		cout<< "元素 " << find_num << " 不在num_list中" << endl;
		
	return 0;
}

//输出:
元素 8 在num_list中
其索引为 3

代码示例二,,find() 用于unordered_map:

/*
LeetCode 1

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。

【示例】
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
*/

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

class Solution {
public:
	static vector<int> twoSum(vector<int>& nums, int target) {
		unordered_map<int, int> hashtable;
		for (int i = 0; i < nums.size(); i++) {
			unordered_map<int, int>::iterator it = hashtable.find(target - nums[i]);
			//也可以直接写为 auto it = hashtable.find(target - nums[i]);
			if (it != hashtable.end()) {
				return { it->second, i };
				// ->是指针的成员提取运算符,只能用于指针
			}
			hashtable[nums[i]] = i;
		}
		return {};
	}
};

int main(){
	vector<int> nums = { 2,11,7,15 };
	const int target = 9;
	vector<int> ans = Solution::twoSum(nums, target);
	for (auto it : ans)
		cout << it << "    ";    // 0, 3
	return 0;
}

参考博客:
C++ find()函数用法(一般用于vector的查找)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 泛型算法 std::find() ,用于在数组或标准库容器中查找指定元素 的相关文章

随机推荐

  • CocoaPods:“Use the `$(inherited)` flag” or “Remove the build settings from the target”

    问题背景 解决方法 总结 阅读之前注意 本文阅读建议用时 5min 问题背景 CocoaPods导库的时候 出现了如下情况 The project Debug target overrides the PODS CONFIGURATION
  • docker 复制镜像和复制容器

    复制镜像和复制容器都是通过保存为新镜像而进行的 具体为 保存镜像 docker save ID gt xxx tar docker load lt xxx tar 保存容器 docker export ID gt xxx tar docke
  • C#之Yield Return语法的作用和好处

    还是和以前一样 我先上代码 请大家先拿到我的代码或者你跟着敲 运行看效果 以及理解每行带代码的作用 我们要带着为什么要用Yield这个关键字 不用可以吗这个目的去学知识 我相信会更加的有意思 首先我贴出平时正常输出偶数集合的办法 学习Yie
  • 编译内核函数copy_from_user()和copy_to_user()

    文章目录 一 定义 二 例子 三 问题 1 隐式声明函数 copy from user 2 copy from user 缓冲区爆炸 一 定义 copy from user rwbuf buf count 作用 从用户空间复制到内核空间 c
  • 用switch语句实现简单的取款机程序

    大家好 今天给大家分享一个简单的取款机程序 相关函数 switch语句 分支语句 case语句 分支条件 break语句 结束循环 default语句 其他分支 演示效果 试试存款 存款成功 再试试取款 取款也成功 代码部分 源文件名 ma
  • Anaconda安装和激活

    一 Anaconda下载地址 https mirrors tuna tsinghua edu cn anaconda archive C M O D 说明 使用paddlepaddle需要先安装python环境 这里我们选择python集成
  • java判断平衡二叉树 - Kaiqisan

    大家好 都吃晚饭了吗 我是Kaiqisan 是一个已经走出社恐的一般生徒 今天还是二叉树的内容 首先明确一个概念 何为平衡二叉树 答 左子树和右子树高度差小于等于1 所以判断一个数是否为平衡二叉树的时候需要遍历所有的子树 因为概念的限制 即
  • Kafka Stream

    文章目录 一 Kafka Stream背景 1 Kafka Stream是什么 2 什么是流式计算 3 为什么要有Kafka Stream 二 Kafka Stream架构 1 Kafka Stream整体架构 2 Processor To
  • js判断对象数组中的元素是否存在重复

    1 使用 Array some 方法和自定义比较函数 使用 Array some 方法遍历数组 对每个元素执行自定义的比较函数 比较函数使用 Array findIndex 方法来查找与当前元素相等且索引不同的元素 如果找到则表示存在重复元
  • Java笔试题

    精选30道Java笔试题解答 都是一些非常非常基础的题 是我最近参加各大IT公司笔试后靠记忆记下来的 经过整理献给与我一样参加各大IT校园招聘的同学们 纯考Java基础功底 老手们就不用进来了 免得笑话我们这些未出校门的孩纸们 但是IT公司
  • EasyExcel——多sheet、有合并单元格的excel导入

    EasyExcel 读Excel官方文档链接 maven依赖
  • 系统运维-Linux Mariadb数据库基本命令教程

    Mariadb 是MySQL数据库的一个分支 它与MySQL比较有更优的存储引擎 运行速度快等优势 实验环境 Rocky 9 0 本地yum 安装Mariadb yum install mariadb y 开启服务并设置一下自启动 syst
  • mysql常用命令

    1 显示所有数据库 show database 2 显示所有表 show tables 3 显示表结构 desc 表名 4 查询所有表 select from 表名 参考 1 MYSQL常用SQL命令 http hi baidu com g
  • 限制input输入符合规则的浮点数

    给指定的dom添加事件 col sm 2 min goods amount keydown function e return formatInput e 限制input输入符合规则的浮点数 param type e 键盘事件 param
  • sizeof,strlen-----关于两者的一些小题解

    思维导图 目录 做题先知 第一波题目 一维数组 第一波题目解答 第二波题目 2 1字符数组为 char arr a b c d e f 详细题解 第三波题目 字符数组 char arr abcdef 详细题解 第四波题目 char p ab
  • 用Typora+PicGo搞定多个平台发文和微信公众号排版

    文章目录 如何开启公众号写作新思路 1 本文概述 1 1 适用人群 1 2 阅读完本文你可以获得什么 1 3 你需要什么 1 4 原理 2 安装npm 3 注册码云Gitee 3 1 新建仓库 3 2 创建私人令牌 4 安装PicGo 4
  • 【数据挖掘】期末复习:ID3、DBSCAN、关联分析、离群点挖掘等

    文章目录 小题 一些要背 计算 大题 分类 ID3 C4 5 CART Gini系数 K近邻 ID3 C4 5 K近邻优缺点 分类评价 朴素贝叶斯 聚类 K means DBSCAN 一趟聚类算法 层次聚类 关联分析 离群点挖掘 OF1 O
  • VMware Workstation 不可恢复错误: (vcpu-0),Exception 0xc0000005 (access violation) has occurred.

    在使用VMware虚拟机的时候可能会出现VMware Workstation 不可恢复错误 vcpu 0 Exception 0xc0000005 access violation has occurred 的报错情况 经常出现在启动 挂起
  • 【游戏音效】Unity集成Wwise并进行开发的全流程教程(一)准备工作

    集成教程 游戏音效 Unity集成Wwise并进行开发的全流程教程 二 Wwise项目 游戏音效 Unity集成Wwise并进行开发的全流程教程 三 脚本接入Unity 前言 Unity有自己的原生音乐功能 AduioSound 但是这个功
  • C++ 泛型算法 std::find() ,用于在数组或标准库容器中查找指定元素

    find 函数是一个 泛型算法 可以用于操作所有STL容器 它用于在数组或标准库容器 如vector map 中查找指定元素 查找成功则返回一个指向指定元素的迭代器 查找失败则返回end迭代器 注意不是返回 true or false 代码