【C++】STL 容器 - set 集合容器 ⑦ ( 查找元素 - set#find 函数 | 获取元素个数 - set#count 函数 )

文章目录

  • 一、查找元素 - set#find 函数
    • 1、函数原型 简介
    • 2、代码示例 - set#find 函数
  • 二、获取元素个数 - set#count 函数
    • 1、函数原型 简介
    • 2、代码示例 - set#find 函数






一、查找元素 - set#find 函数



1、函数原型 简介


在 C++ 语言的 STL 标准模板库 , std::set 集合容器 是一个存储唯一元素的容器 , 该容器的底层使用 红黑树 数据结构 实现 ; std::set 容器是有序的 , 存储元素时 会自动按指定规则进行排序 ;

std::set 集合容器类 提供了一个 find 成员函数 , 用于查找 集合容器中 指定值的元素 ;

std::set#find() 函数原型 如下 :

iterator find(const key_type& k) const;
  • 参数解析 :
    • 元素类型 : 参数类型 key_type 是 std::set 集合容器 元素类型 ;
    • 引用类型 : 为了避免二次拷贝 , 使用该元素类型的 引用类型 key_type& 作为参数类型 ;
  • 返回值解析 :
    • 找到指定元素 : 该 find 函数返回一个迭代器 , 该 迭代器指向找到的元素 ;
    • 没有找到元素 : 如果在 std::set 集合容器中 , 没有找到指定元素 , 则返回 指向集合末尾的迭代器 , 即 std::set::end() 迭代器 , 该迭代器不指向任何元素 , 指向最后一个元素的后一个位置 ;

2、代码示例 - set#find 函数


在下面的代码示例中 ,

首先 , 创建了一个包含整数 1 到 5 的 std::set 集合容器 ,

    // 初始化set<int> mySet = { 1, 2, 3, 4, 5 };

然后 , 使用 find 函数查找整数 3 ;

    // 调用 auto it = mySet.find(3);

最后 , 如果找到 整数 3 , 迭代器指向找到的元素 , 如果没有找到元素 , 迭代器指向末尾位置 ;
可以根据判断 返回的 迭代器是否等于 mySet.end() 值确定 ,

  • 如果等于该 末尾迭代器 值 , 说明没有找到元素 ;
  • 如果不等于该 末尾迭代器 值 , 说明找到了元素 ;
    // 如果找到元素, 迭代器指向找到的元素// 如果没有找到元素 , 迭代器指向末尾位置if (it != mySet.end()) {cout << "找到元素 : " << *it << endl;}else {cout << "未找到元素 "<< endl;}

代码示例 :

#include "iostream"
using namespace std;
#include "set"int main() {// 初始化set<int> mySet = { 1, 2, 3, 4, 5 };// 调用 auto it = mySet.find(3);// 如果找到元素, 迭代器指向找到的元素// 如果没有找到元素 , 迭代器指向末尾位置if (it != mySet.end()) {cout << "找到元素 : " << *it << endl;}else {cout << "未找到元素 "<< endl;}// 控制台暂停 , 按任意键继续向后执行system("pause");return 0;
};

执行结果 :

找到元素 : 3
请按任意键继续. . .

在这里插入图片描述





二、获取元素个数 - set#count 函数



1、函数原型 简介


std::set 集合容器 中的每个元素都是唯一的 , 对于任何元素 , 它 在集合中要么存在 , 要么不存在 , 这意味着其计数只能是 0 或 1 ;

在 std::multiset 集合容器 中 , 统计元素个数是有意义的 ;

std::set 集合容器类 提供了一个 count 成员函数 , 用于确定集合中特定元素的数量 ;

  • 对于 std::set 来说 获取的结果只能是 0 或 1 ;
  • 对于 std::multiset 容器 , 可以获取元素的个数 ;

这是为了保持与其他 关联容器的接口一致性 , 如 : std::multiset 容器 , std::set 也提供了这个函数接口 ;


count 函数原型如下 :

size_type count(const key_type& k) const;
  • 参数解析 :
    • 元素类型 : 参数类型 key_type 是 std::set 集合容器 元素类型 ;
    • 引用类型 : 为了避免二次拷贝 , 使用该元素类型的 引用类型 key_type& 作为参数类型 ;
  • 返回值解析 : 该函数返回 size_type 无符号整数类型 , 表示指定元素 k 的数量 ;
    • 如果 set 容器中 存在该值 , 返回 1 ;
    • 如果 set 容器中 不存在该值 , 返回 0 ;

2、代码示例 - set#find 函数


在下面的代码中 , 使用 count 函数来检查整数元素 3 是否存在于集合中 , 由于 std::set 集合容器可以保证元素的唯一性 ,

  • 如果元素存在 , count 函数将返回 1 ;
  • 如果元素不存在 , count 函数将返回 0 ;

代码示例 :

#include "iostream"
using namespace std;
#include "set"int main() {// 初始化set<int> mySet = { 1, 2, 3, 4, 5 };// 获取元素 3 的个数auto count = mySet.count(3);// 获取元素 6 的个数auto count2 = mySet.count(6);cout << "元素3 : " << count << endl;cout << "元素6 : " << count2 << endl;// 控制台暂停 , 按任意键继续向后执行system("pause");return 0;
};

执行结果 :

元素3 : 1
元素6 : 0
请按任意键继续. . .

在这里插入图片描述

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

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

相关文章

Flash、Ajax各自的优缺点,在使用中如何取舍

Flash 和 Ajax 都是用于 Web 开发的技术&#xff0c;各自有一些优缺点。在使用中取舍需要根据具体的需求和情况来决定。 flash 的优点包括&#xff1a; 动画和多媒体效果丰富&#xff1a;Flash 可以创建非常丰富的动画和多媒体效果&#xff0c;适合制作交互式内容和游戏。跨平…

【C#与Redis】--高级主题--Redis 哨兵

一、简介 1.1 哨兵的概述 哨兵&#xff08;Sentinel&#xff09;是 Redis 分布式系统中用于监控和管理多个 Redis 服务器的组件。它的主要目标是确保 Redis 系统的高可用性&#xff0c;通过实时监测主节点和从节点的状态&#xff0c;及时发现并自动处理故障&#xff0c;保证系…

数据分析硬核工具Origin各版本安装指南

下载链接 https://pan.baidu.com/s/12mENFtRFdNaLzVKmE6w_Uw?pwd0531 1.鼠标右击【Origin 2022(64bit)】压缩包&#xff08;win11及以上系统需先点击显示更多“选项”&#xff09;选择【解压到 Origin 2022(64bit)】。 2.双击打开解压后的【Origin 2022(64bit)】文件夹。 3.…

编程界的“魔术师”:Python中的一行代码艺术

标题&#xff1a; “成为编程界的“魔术师”&#xff1a;Python中的一行代码艺术” 编程的世界中&#xff0c;有一种被称为“一行代码魔术师”的存在。他们擅长用简洁、精炼的代码实现复杂的功能&#xff0c;就像变魔术一样令人惊叹。 Python作为一种高级编程语言&#xff0c…

数据被锁?被.mkp 勒索病毒攻击后的拯救行动

导言&#xff1a; 网络安全面临着越来越多的挑战&#xff0c;而.mallox勒索病毒则成为数字威胁中的一股强大势力。它的威胁不仅体现在其高度复杂的加密算法上&#xff0c;还表现在对受感染系统的深度渗透和数据的极大破坏上。以下是.mallox勒索病毒的主要威胁&#xff1a;如不…

Python学习 - 爬虫系统架构设计

主要业务流程 初始请求请求过滤器请求队列响应下载器数据解析器数据清洗器存储器 设计图 master slave&#xff1a;master控制队列&#xff0c;过滤&#xff0c;传递任务&#xff1b;slave负责执行 缺点&#xff1a;master和slave端交互数据频繁&#xff0c;slave的数据进出…

图文证明 牛顿-莱布尼茨公式

牛顿-莱布尼茨公式 牛顿-莱布尼茨公式是微积分中的基本定理之一&#xff0c;它描述了函数的导数和不定积分之间的关系。 该公式通常用来计算定积分。设函数f(x)在区间[a, b]上连续&#xff0c;且F(x)是f(x)在该区间上的一个原函数 即F’(x) f(x)。则牛顿-莱布尼茨公式表示为&…

【AIGC-图片生成视频系列-2】八仙过海,各显神通:AI生成视频相关汇总剖析

最近「图片生成视频系列」层出不穷&#xff0c;我拜读并结合实践&#xff08;对&#xff0c;就是手撕代码&#xff0c;有开源就撕&#xff09;&#xff0c;并对以下几篇文章的相似点以及关键点稍微做个总结&#xff1a; 一. 生成视频中图像的一致性 在图像生成视频的这个过程…

提升CSC加分项|高职教师赴新西兰惠灵顿维多利亚大学访学交流

S老师科研背景条件一般&#xff0c;担心无法获得邀请函及通过CSC审批。我们建议&#xff1a;1.以加强国际合作和跨学科合作的方式&#xff0c;增强高职院校的影响力&#xff0c;为CSC评审提供加分项&#xff1b;2.同时申报4月份的国家公派和5月份的西部/地方合作项目&#xff0…

Java进阶(第八期): Java中递归的的使用和递归解决一些算法问题 Java中的异常机制、异常的处理逻辑 自定义异常

文章目录 一、递归1.1 递归的介绍1.2 递归的简单练习1.3 图解递归执行流程&#xff1a;1.4 使用递归完成悲波那契数列1.5 猴子吃桃子问题 二、异常三 、异常的处理逻辑3.1 try catch 捕获异常3.2 throws抛出异常 四、自定义异常 Java进阶&#xff08;第八期&#xff09; 一、递…

2、gdb常用功能2

1.4、线程 程序避免不了涉及到多线程.常用指令如下. 命令简写形式说明info thread显示当前进程内所有线程信息thread 切换到num线程thread find 寻找regexp在gdb中的idinfo address 结合上述图片理解&#xff0c;第一列的id是gdb内部为线程排序的一个id&#xff0c;第三列中…

行人重识别(ReID)基础知识入门

这里写目录标题 1、ReID技术概述1.1 基本原理1.2 实现流程1.3 重识别存在的技术挑战 2、训练数据格式介绍 1、ReID技术概述 1.1 基本原理 ReID&#xff0c;全称Re-identification&#xff0c;目的是利用各种智能算法在图像数据库中找到与要搜索的目标相似的对象。ReID是图像检…

Eureka服务注册与发现

1. Eureka简介 Eureka采用了CS的设计架构&#xff0c;Eureka Server 作为服务注册功能的服务器&#xff0c;它是服务注册中心。而系统中的其他微服务&#xff0c;使用 Eureka的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系…

三个故事,谈谈小米汽车技术发布会

都说新年新气象&#xff0c;随着年末消费旺季到来&#xff0c;汽车市场越来越热闹了。 继蔚来12月23日公布旗舰车型ET9&#xff0c;华为26日发布问界M9&#xff0c;小米汽车首款量产车型SU7终于正式亮相。 12月28日&#xff0c;在小米汽车技术发布会上&#xff0c;小米创办人…

Go语言程序设计-第5章--函数

Go语言程序设计-第5章–函数 5.1 函数声明 每个函数声明都包含一个名字、一个形参列表、一个可选的返回列表以及函数体: func name(parameter-list) (result-list) {body }func add(x int, y int) int { return x y} func sub(x, y int) (z int) {z x - y; return} func f…

CCNP课程实验-Route_Path_Control_CFG

目录 实验条件网络拓朴需求 配置实现基础配置需求实现1.A---F所有区用Loopback模拟&#xff0c;地址格式为&#xff1a;XX.XX.XX.XX/32&#xff0c;其中X为路由器编号。根据拓扑宣告进对应协议。A1和A2区为特例&#xff0c;A1&#xff1a;55.55.55.0/24&#xff0c;A2&#xff…

【数学建模美赛M奖速成系列】Matplotlib绘图技巧(二)

Matplotlib绘图技巧&#xff08;二&#xff09; 写在前面2. 函数间区域填充函数fill_between()和fill()参数&#xff1a; 3. 散点图 scatter4. 直方图 hist5. 条形图 bar5.1 一个数据样本的条形图参数&#xff1a; 5.2 多个数据样本进行对比的直方图5.3 水平条形图参数 5.4 绘制…

Vue3-31-路由-RouterView的name属性的作用

作用描述 <router-view> 标签是用来渲染路由对应的组件的位置&#xff1b; 默认情况下&#xff0c;一个路由是只对应一个组件的。 但是&#xff0c;可以通过给 <router-view> 指定 name 属性的方式&#xff0c;实现同时渲染多个组件的效果。 这也叫做 命名视图。 注…

《企业数据资源相关会计处理暂行规定》学习笔记

附&#xff1a;2023年数据资源入表白皮书下载&#xff1a; 关注WX公众号&#xff1a; commindtech77&#xff0c; 获得数据资产相关白皮书下载地址 1. 回复关键字&#xff1a;数据资源入表白皮书 下载 《2023数据资源入表白皮书》 2. 回复关键字&#xff1a;光大银行 下载 光…

云安全是什么?有什么作用

随着云计算的普及和深入应用&#xff0c;云安全已成为企业和组织面临的重要挑战。云安全旨在保护云计算环境中的数据、应用程序和基础设施免受各种威胁和攻击&#xff0c;确保云计算环境的可用性、机密性和完整性。 云安全包括以下几个关键领域&#xff1a; 一、数据保护 数据…