c++ vector 使用find查找指定元素方法

在 C++ 中,std::vector 是一个动态数组,用于存储同类型元素的序列。如果你想在 std::vector 中查找指定元素,可以使用 std::find 算法。std::find 是定义在 <algorithm> 头文件中的标准库函数。

以下是一个示例代码,展示了如何使用 std::findstd::vector 中查找指定元素:

#include<iostream>#include<vector>#include<algorithm>// 包含 std::findintmain(){// 创建一个 vector 并初始化一些元素 std::vector<int> vec ={1,2,3,4,5};// 要查找的元素int target =3;// 使用 std::find 查找元素auto it = std::find(vec.begin(), vec.end(), target);// 检查是否找到元素if(it != vec.end()){ std::cout <<"元素 "<< target <<" 找到在位置: "<< std::distance(vec.begin(), it)<< std::endl;}else{ std::cout <<"元素 "<< target <<" 未找到"<< std::endl;}return0;}

代码说明:

  1. 包含头文件
    • #include <iostream>:用于输入输出操作。
    • #include <vector>:用于使用 std::vector
    • #include <algorithm>:用于使用 std::find
  2. 初始化 std::vector
    • std::vector<int> vec = {1, 2, 3, 4, 5};:创建一个包含 5 个整数的 std::vector
  3. 定义目标元素
    • int target = 3;:定义要查找的目标元素。
  4. 使用 std::find 查找元素
    • auto it = std::find(vec.begin(), vec.end(), target);:调用 std::find,传入 vector 的开始迭代器、结束迭代器和目标值。it 将指向找到的元素或 vec.end()(如果未找到)。
  5. 检查结果
    • if (it != vec.end()):检查迭代器是否等于 vec.end(),如果不等,说明找到了目标元素。
    • std::distance(vec.begin(), it):计算找到元素的位置索引。
    • 如果未找到元素,输出相应的提示信息。

注意事项:

  • std::find 是线性搜索算法,其时间复杂度为 O(n),其中 n 是 vector 的大小。
  • 如果 vector 中包含大量元素,并且查找操作非常频繁,可以考虑使用其他数据结构(如 std::unordered_setstd::set)来提高查找效率。

通过这种方式,你可以在 std::vector 中有效地查找指定元素。

Read more

Re:从零开始的 C++ 入門篇(七)类和对象·第四篇:拷贝构造函数&赋值运算符重载

Re:从零开始的 C++ 入門篇(七)类和对象·第四篇:拷贝构造函数&赋值运算符重载

◆ 博主名称: 晓此方-ZEEKLOG博客 大家好,欢迎来到晓此方的博客。 ⭐️C++系列个人专栏: Re:从零开始的C++_晓此方的博客-ZEEKLOG博客 目录 0.1概要&序論 一,拷贝构造函数 1.1拷贝构造函数的定义 1.2拷贝构造函数的创建 1.2.1采用const引用的原因 1.3拷贝构造函数的调用 1.3.1情形一:拷贝构造初始化 1.3.2情形二传值调用拷贝构造 1.3.3情形三 1.3.4总结 1.3.5补充 1.4传值拷贝构造与无穷递归 1.4.1浅拷贝与深拷贝 1.4.2无穷递归原理 1.

By Ne0inhk
C++ 类和对象(下):初始化列表、static 成员与编译器优化深度剖析

C++ 类和对象(下):初始化列表、static 成员与编译器优化深度剖析

✨ 把代码写进星轨, 用逻辑丈量宇宙。 导航链接个人主页🏠 星轨初途基础语言专栏💻 C语言 、 📚 数据结构C++ 进阶专栏🏆 C++学习(竞赛类) 、 ⚙️ C++专栏(开发类)刷题实战专栏🚀 算法及编程题分享 文章目录 * 前言 * 一、再探构造函数:初始化列表 * 1. 必须用初始化列表的三种情况 * 2. 语法格式 * 3. 🚨 致命踩坑点:初始化的真实顺序 * 二、隐式类型转换与 explicit 关键字 * 三、static 成员与牛客实战题拆解 * 1. static 成员的硬核特性全景图 * 2. ⚔️ 实战演练:牛客网高频题(求1+2+...+n) * 四、终极笔试题:全局、局部、静态对象的构造与析构顺序 * 五、友元:

By Ne0inhk
C++从入门到实战(十一)详细讲解C/C++语言中内存分布与C与C++内存管理对比

C++从入门到实战(十一)详细讲解C/C++语言中内存分布与C与C++内存管理对比

C++从入门到实战(十一)详细讲解C/C++语言中内存分布与C与C++内存管理对比 * 前言 * 一、C/C++语言中内存分布 * 1.内核空间 * 2.栈 * 3.堆 * 4.数据段 * 5.代码段 * 二、例题带练巩固C/C++语言中内存分布的知识 * 题目讲解 * 题目答案 * 三、C语言动态内存分配(知识回顾) * 3.1 为什么需要动态内存分配 * 3.2 malloc 函数 * 3.3 calloc 函数 * 3.4 realloc 函数 * 3.5 free 函数

By Ne0inhk
C++:list(带头双向链表)增删查改模拟实现

C++:list(带头双向链表)增删查改模拟实现

Hello大家好! 很高兴与大家见面! 给生活添点快乐,开始今天的编程之路。 我的博客:<但愿. 我的专栏:C语言、题目精讲、算法与数据结构、C++ 欢迎点赞,关注 目录    前言:(这里相对于string、vector,相对复杂,讲解较多)            1与string、vector相比:                         1.1没有重载运算符[]接口:                         1.2没有reserve(扩容)接口:                         1.3list增加的接口:                          1.4迭代器的不同:   一、list底层带头双向链表验证,节点构造              1.1节点的构造:              1.2list底层数据结构(带头双向链表)   二   迭代器总结               2.1迭代器的分类(支持的操作/性质)                2.2迭代器的实现:      三

By Ne0inhk