首页 > 其他分享 >std::vector 中查找某个元素是否存在

std::vector 中查找某个元素是否存在

时间:2024-07-08 11:23:18浏览次数:15  
标签:std begin end val 查找 targetVal vector vec

std::vector 中不存在直接查找某个元素是否存在的方法,一般是通过 <algorithm> 中的 std::find, std::find_if, std::count, std::count_if 等方法的返回值来判断对应元素是否存在。

如当vector中存储的元素为 double 类型时,需要设定其精度,判断代码如下

#include <vector>
#include <algorithm>

double targetVal = 0.01;
vector<double> vec = { 0, 0.005, 0.01, 0.01, 0.015, 0.02, 0.02, 0.025, 0.03, 0.035 };

// 根据默认的精度进行判断
int res2 = std::count(vec.begin(), vec.end(), targetVal);
// 使用Lambda表达式,来根据一定的条件进行判断
int res3 = std::count_if(vec.begin(), vec.end(), [ & ](double val)
{
    return fabs(targetVal - val) < 1e-7;
});

// 根据默认精度进行判断
auto it = std::find(vec.begin(), vec.end(), targetVal);
// 使用Lambda表达式,根据是否符合指定条件来进行判断
auto itIf = std::find_if(vec.begin(), vec.end(), [&](double val)
{
    return fabs(targetVal - val) < 1e-7;
});

if(it != vec.end()) // 迭代器不等于 vec.end() 时,表示容器中存在该值
{
    size_t index = std::distance(vec.begin(), it);
    double val = vec[index];
}

标签:std,begin,end,val,查找,targetVal,vector,vec
From: https://www.cnblogs.com/Jeffxu/p/18289534

相关文章

  • 查找相差最小的数字
    constfindClosestNumbers=(arr=[1,2,3,4,5,6,7,8,9],target=3)=>{letleft=0;letright=arr.length-1;letminDiff=Infinity;letclosestNumbers=[];while(left<=right){constmid=Math.floor((left+right)/......
  • unity编辑器拓展,查找项目中预制体引用的组件或者脚本
    `usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEditor;usingUnityEngine.UI;usingSystem.Reflection;usingSystem;publicclassSearchComponent:EditorWindow{privatestringcomponentName="UnityEngine.......
  • 34. 在排序数组中查找元素的第一个和最后一个位置(中等)
    34.在排序数组中查找元素的第一个和最后一个位置1.题目描述2.详细题解(1)朴素二分查找算法(2)改进二分查找算法3.代码实现3.1Python  方法一:  方法二:  方法三:优化方法二3.2Java1.题目描述题目中转:34.在排序数组中查找元素的第一个和最后一个位置2.详......
  • 树状数组实现 查找逆序对
     题意:输入一个整数n。接下来输入一行n个整数 。1<=  <=n ,且每个数字只会出现一次题解:按每个数字的大小存入树状数组#include<bits/stdc++.h>usingnamespacestd;#definelllonglongconstintN=10000;intarr[N];lla[N];intn;llquery(intx){ll......
  • 【34. 在排序数组中查找元素的第一个和最后一个位置】
    题目:给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1,-1]。你必须设计并实现时间复杂度为O(logn)的算法解决此问题。示例1:输入:nums=[5,7,7,8,8,10],t......
  • 2024华为OD机试真题-根据IP查找城市-(C++/Python)-C卷D卷-200分
    2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++)       题目描述某业务需要根据终端的IP地址获取该终端归属的城市,可以根据公开的IP地址池信息查询归属城市。地址池格式如下:城市名=起始IP,结束IP起始和结束地址按照英文逗号分隔,多个地址段采用英文分号分隔。比......
  • 数据结构实验报告:查找
     一、实验目的1.掌握查找表的结构。2.掌握顺序查找、折半查找、二叉排序树查找和哈希查找。二、实验环境Windows10、VisualC++6.0三、实验任务1.编写程序实现顺序查找和折半查找。(1)顺序查找#include<stdio.h>#include<stdlib.h>#defineLIST_SIZE20typ......
  • 多线程编程的基本概念,C++标准库中的多线程支持(std::thread,std::async),如何处理线程同步
    多线程编程在现代计算机系统中非常重要,因为它能够使程序同时执行多个操作,提高计算效率。以下是多线程编程的基本概念及如何在C++标准库中使用std::thread和std::async进行多线程编程,同时处理线程同步和并发问题。多线程编程的基本概念线程(Thread):线程是一个轻量级的进程,是......
  • [namespace hdk] ordered_vector
    功能:已重载[]运算符已重载构造函数clear()it()以std::vector形式返回自身print(char='',char='\n')输出,第一个参数为分隔符,第二个参数为结束符count(x)查找x的出现次数find(x)判断x是否出现,是返回1,否则返回0empty()判断当前是否为空size()返回当前元素个数lower......
  • Day1| 704. 二分查找 &27. 移除元素
    704.二分查找题目链接:https://leetcode.cn/problems/binary-search/description/思路:切记二分查找要基于排序好的数组或者数据,否则二分查找必不能使用!!!!!!!!!双指针写最简单,一个头指针从0开始,一个尾指针从数组长度-1开始,中间指针是头+尾/2,每次比较头尾中间指针的值......