【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
请按任意键继续. . .

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件测试/测试开发丨Python 内置库 OS 学习笔记分享

os 概述 os: Operating System os 使用 导入 os 模块 查看 os 模块使用文档 help(os)dir(os) import os# 查看os模块说明文档 help(os)# 查看os模块的属性和方法 print(dir(os))os 操作系统相关 os.name&#xff1a;获取系统名称os.environ&#xff1a;获取系统环境变量信…

西北工业大学计算机组成原理实验报告——verilog后两次

在单周期CPU的基础上开发实现流水线CPU 说明&#xff1a; 1. 该PDF带有大纲功能&#xff0c;点击大纲中的对应标题&#xff0c;可以快速跳转。 2. 目录层级为&#xff1a; 一、一级标题 &#xff08;二&#xff09;二级标题 &#xff08;3&#xff09;三级标题 4.四级标…

Stable Diffusion Webui在Linux服务器第一次运行不能连接huggingface

第一次运行stable-diffusion-webui出现了如下错误 (MaxRetryError("HTTPSConnectionPool(hosthuggingface.co, port443): Max retries exceeded with url: /openai/clip-vit-large-patch14/resolve/main/vocab.json (Caused by ConnectTimeoutError(<urllib3.connecti…

亚信安慧AntDB数据库两项目分别入选2023“星河”标杆、优秀案例

近日&#xff0c;由中国信息通信研究院、中国通信标准化协会大数据技术标准推进委员会&#xff08;CCSA TC601&#xff09;共同组织的第七届大数据“星河&#xff08;Galaxy&#xff09;”案例评选结果公示&#xff0c;亚信安慧AntDB数据库两项目入选&#xff0c;其中“基于Ant…

C单片机数据类型与格式化

C语言数据类型 关键字位数表示范围stdint关键字ST关键字举例unsigned char80 ~ 255uint8_tu8u8 data 128char8-128 ~ 127int8_ts8s8 temperature 25unsigned short160 ~ 65535uint16_tu16u16 counter 5000short16-32768 ~ 32767int16_ts16s16 position 32767unsigned int3…

基于C#串口通信的智能仪表充电管理系统

基于C#串口通信的智能仪表充电管理系统 谁要源码的话加入群聊收费50元。提供代码&#xff0c;加QQ66987475。 一、 系统描述 该系统管理矿用检测仪器的充电、领取、归还、考勤等基本功能&#xff0c;一套系统拓补图如下&#xff1a; 由上位机、打印机、大屏幕、人脸识别仪…

腾讯云轻量应用服务器是什么?详细介绍

腾讯云轻量应用服务器开箱即用、运维简单的轻量级云服务器&#xff0c;CPU内存带宽配置高并且价格特别便宜&#xff0c;大带宽&#xff0c;但是限制月流量。轻量2核2G3M带宽62元一年、2核2G4M优惠价118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;756元3年、…

力扣:62. 不同路径(动态规划,附python二维数组的定义)

题目&#xff1a; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&…

mxxWechatBot微信机器人V2版本文档说明

大家伙&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 先看这里 一、前言二、mxxWechatBot流程图三、怎么使用&#xff1f; 一、前言 经过不断地探索与研究&#xff0c;mxxWechatBot正式上线&#xff0c;届时全面开放使用。 mxxWechatBot&am…

goframe v2 模板引擎的用法

这里用的goframe v2框架 提醒&#xff1a;下面的import 引入的控制器和api&#xff0c;根据自己实际项目路径 main函数 import ("context""github.com/gogf/gf/v2/net/ghttp""github.com/gzdzh/dzhgo/modules/dzhCms/controller/web""gith…

C/C++ BM3 链表中的节点每k个一组翻转

文章目录 前言题目思路阐述代码总结 前言 这道题的关键是理解链表指针的位置&#xff1b; 在BM2的区间翻转基础上&#xff0c;多了个指针偏移&#xff0c;博客里面我贴图阐述一下。 题目 思路阐述 这道题的翻转过程参考BM2的题解&#xff0c;这里主要阐述一下指针移动和整体思…

测试C#调用ZXing.Net识别图片中的条形码

微信公众号“dotNET跨平台”的文章《.NET 使用 ZXing.Net 生成二维码&#xff0c;并识别》中介绍了使用ZXing.Net库创建并识别条形码的方式&#xff0c;该库除了能生成二维码、PDF 417、EAN、UPC、Aztec等条形码外&#xff0c;还能从图片中识别条形码内容&#xff0c;本文学习并…

04-获取认证的用户身份信息

存储用户信息的方式 获取用户信息的流程 用户提交账号和密码后,DaoAuthenticationProvider调用UserDetailsService接口实现类的loadUserByUsername()方法,该方法可以接收请求参数username的值,然后根据该值查询用户信息,最后将账号,密码,权限封装到UserDetails对象中并返回给…

linux常见基础指令

入门常见基础指令 ls、stat、 pwd 、cd、tree、 whoami、 touch、 mkdir、 rm 、 man、 cp、mv、cat、tac、echo、>、 >>、 < 、more、 less、 head、 tail、date、 cal、 find、 which、alias、whereis、grep、zip与unzip、 tar、bc、uname、xargs... 热键Tab、…

DrGraph原理示教 - OpenCV 4 功能 - 颜色空间

前言 前段时间&#xff0c;甲方提出明确需求&#xff0c;让把软件国产化。稍微研究了一下&#xff0c;那就转QT开发&#xff0c;顺便把以前的功能代码重写一遍。 至于在Ubuntu下折腾QT、OpenCV安装事宜&#xff0c;网上文章很多&#xff0c;照猫画虎即可。 这个过程&#xff0…

金蝶云星空业务对象扩展

文章目录 金蝶云星空业务对象扩展 金蝶云星空业务对象扩展 当前对象已经存在扩展不允许再次扩展。 一般来说&#xff0c;不允许同级多次扩展。因为同级扩展会出现界面元素冲突的情况。 但是通过不同应用扩展部署到环境的&#xff0c;允许一个开发商只能扩展一次标准产品。 不过…

页面布局--Flexbox的自动边距

标题页面布局–Flexbox的自动边距 通过简单的margin:auto&#xff0c;我们就能实现元素的多种对齐方式。 假设我们在盒子模型里有四个元素&#xff1a; 先给容器使用flex布局&#xff1a; .container {display: flex;justify-content: flex-start;align-items: center;gap: 6…

{MySQL}索引事务和JDBC

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、索引1.1索引是什么1.2作用1.3代码 二、事务2.1什么是事务2.2使用 三.JDBC总结 前言 接着上次&#xff0c;继续讲下MySQL 提示&#xff1a;以下是本篇文章正…

第六课:冷战和消费主义、个人计算机革命、图形用户界面(GUI)及3D图形

第六课&#xff1a;冷战和消费主义、个人计算机革命、图形用户界面&#xff08;GUI&#xff09;及3D图形 第二十四章&#xff1a;冷战和消费主义本课概括&#xff1a;政府和消费者推动了计算机的发展 第二十五章&#xff1a;个人计算机革命本集概括&#xff1a;继续讲计算机发展…

机器学习系列11:减少过拟合——L1、L2正则化

如果我们注意到模型在训练集上的表现明显优于模型在测试集上的表现&#xff0c;那么这就是模型过拟合了&#xff0c;也称为 high variance。 产生的过拟合的原因是对于给定的训练集数据来说&#xff0c;模型太复杂了。有几种可以减少过拟合的方法&#xff1a; 收集更多的训练数…