C++:STL容器-->set

news2024/11/28 2:53:49

使用set容器时需要导入头文件:#include <set>

set和multiset区别:
set不允许容器中有重复的元素
multiset允许容器中有重复的元素

1. 构造函数

set<T> st;
set s(const &st);

void printSet(set<int>& s)
{
    for (set<int>::const_iterator it = s.begin();it!=s.end();it++)
    {
        cout << *it << ends;
    }
    cout << endl;
}
int main() {

    set<int> s;
    // 默认构造函数
    s.insert(20);
    s.insert(10);
    s.insert(30);
    s.insert(-10);
    printSet(s);

    set<int> s1(s);
    printSet(s1);
    // 拷贝构造

    set<int> s2 = s1;
    // 赋值
    printSet(s2);
    
    return 0;
}

特点:1. 所有元素插入时自动被排序;2. set容器不允许插入重复值
在这里插入图片描述

2. set容器–大小和交换

size(); // 返回容器中元素的数组
empty(); // 判断容器是否为空
swap(); // 交换两个集合容器

int main() {

    set<int> s;
    // 默认构造函数
    s.insert(20);
    s.insert(10);
    s.insert(30);
    s.insert(-10);
    printSet(s);

    cout << "s的大小为:" << s.size() << endl;
    if(!s.empty())
    {
        cout << "s不为null" << endl;
    }
    else
    {
        cout << "s为null" << endl;
    }

    set<int> s2;
    s2.insert(100);
    s2.insert(-90);
    printSet(s2);

    s.swap(s2);
    printSet(s);
    printSet(s2);
    
    return 0;
}

在这里插入图片描述

3. 插入和删除

insert(elem);
clear();
erase(pos); // 删除pos迭代器所指的元素,返回下一个元素的迭代器
erase(beg,end); // 删除区间[beg,end)的所有元素,返回下一个元素的迭代器
erase(elem); // 删除容器中值为elem的元素

int main() {

    set<int> s;
    // 默认构造函数
    s.insert(20);
    s.insert(10);
    s.insert(30);
    s.insert(-10);
    s.insert(-120);
    printSet(s);

    set<int>::iterator beg = s.begin(),end=s.end();
    beg ++;
    end --;
    s.erase(beg,end);
    // -120 -10 10 20 30
    printSet(s);

    beg = s.begin();
    s.erase(beg);
    // 30
    printSet(s);

    return 0;
}

在这里插入图片描述

4. 查找和统计

find(key); // 查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end();
count(key); // 统计key的元素个数

int main() {

    set<int> s;
    // 默认构造函数
    s.insert(20);
    s.insert(10);
    s.insert(30);
    s.insert(-10);
    s.insert(-120);
    printSet(s);

    auto it = s.find(-120);
    if(it !=s.end())
    {
        cout << "容器s中存在元素-120"<< endl;
    }
    else
    {
        cout << "容器s中不存在元素-120"<< endl;
    }

    int a = s.count(-120);
    cout << "set容器-120的个数为:" << a << endl;
    return 0;
}

在这里插入图片描述

5. set容器的排序

set容器默认排序规则为从小到大

class MyCompare{
public:
    bool operator()(int v1,int v2)
    {
        return v1 > v2;
    }
};
// 降序

int main() {

    set<int> s;
    // 默认构造函数
    s.insert(20);
    s.insert(10);
    s.insert(30);
    s.insert(-10);
    s.insert(-120);
    printSet(s);
    // 升序

    set<int,MyCompare> s1;
    s1.insert(20);
    s1.insert(10);
    s1.insert(30);
    s1.insert(-10);
    s1.insert(-120);
    for (set<int,MyCompare>::iterator it = s1.begin();it!=s1.end();it++)
    {
        cout << *it << ends;
    }
    // 降序
    cout << endl;
    return 0;
}

在这里插入图片描述

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

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

相关文章

laravel版本≥ 8.1

laravel10 php ≥ 8.1 且 ≤ 8.3&#xff1f; 8.1 < php < 8.3PHP版本要求在 8.1 到 8.3 之间&#xff0c;包括这两个版本。具体来说&#xff1a;"≥ 8.1" 表示 PHP 的版本至少是 8.1&#xff0c;也就是说 8.1 及以上的版本都可以。 "≤ 8.3" 表示 P…

MBD_入门篇_21_SimulinkSignalAttributes

21.SignalAttributes 21.1 概述 Signal Attributes&#xff0c;信号属性&#xff0c;信号特性。 21.2 回顾常用模块 21.2.1 DataTypeConversion 数据类型转换模块&#xff0c;可以对信号的数据类型进行强制转换。无符号数据与有符号数据相加&#xff0c;我们可以将无符号数据转…

VS2022 使用C++访问 mariadb 数据库

首先,下载 MariaDB Connector/C++ 库 MariaDB Products & Tools Downloads | MariaDB 第二步,安装后 第三步,写代码 #include <iostream> #include <cstring> #include <memory> #include <windows.h>#include <mariadb/conncpp.hpp>…

echarts学习:通过图例事件实现选中后控制多条折线的显隐

1.问题描述 我在工作中遇到了这样一个需求&#xff1a;我们都知道点击echarts折线图的图例&#xff0c;是可以控制折线的显隐的。我现在希望点击某一个图例可以改变多条折线的显隐。 例如在下面这张图中&#xff0c;我将“xxx水位”和“yyy水位”分为一组&#xff1b;将“xxx…

基于vue的游戏网站设计与实现-计算机毕业设计源码02473

摘要 随着计算机科学技术日渐成熟&#xff0c;人们已经深刻认识到了计算机功能的强大&#xff0c;计算机已经进入到了人类社会发展的各个领域&#xff0c;并且发挥着十分重要的作用。通过管理系统在电脑上的应用&#xff0c;人们能更好的管理信息&#xff0c;储存数据。为了能够…

Linux 终端窗口设置为透明

Linux 终端窗口设置为透明 打开终端 右键鼠标 选择Profile Preferences 点击Background 选择 Transparent background 拖动滑条调整透明度 完成。

SQL编程基础常见题型练习

SQL编程基础常见题型练习 1. 基础查询1.1. 基础查询1.2. 简单处理查询结果 2. 条件查询2.1. 基础排序2.2. 基础操作符2.3. 高级操作符 3. 高级查询3.1. 计算函数3.2. 分组查询 4. 多表查询4.1. 子查询4.2. 链接查询4.3. 组合查询 5. 必会的常用函数5.1. 条件函数5.2. 日期函数 …

Nginx实战:故障处理_后端服务正常,nginx偶发502(Bad Gateway)

一、故障场景 用户访问服务偶发报错【502 Bad Gateway】&#xff0c;但是服务后端正常运行。架构如下&#xff1a; #mermaid-svg-4dDszusKEuPgIPlt {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-4dDszusKEuPgIPlt…

基于51单片机心率计设计

1 绪论1.1 国内外心率计脉搏仪系统研究现状 心率(Heart Rate)是用来描述心跳周期的专业术语,是指心脏每分钟跳动的次数, 它不仅是反映心脏功能强弱的重要标志,也是反映人体运动强度的生理指标。自公元三世纪我国最早的脉学专著《脉经》问世以来,脉学理论得到不断的发展和提…

Elasticsearch 认证模拟题 - 20

一、题目 定义一个 pipeline&#xff0c;并且将 earthquakes 索引的文档进行更新 pipeline 的 ID 为 earthquakes_pipeline将 magnitude_type 的字段值改为大写如果文档不包含 batch_number&#xff0c;增加这个字段&#xff0c;将数值设置为 1如果已经包含 batch_number&…

自动化测试断言

自动化判断测试用例的执行的结果是否成功&#xff0c;是通过判断测试得到的实际结果与预期结果是否相等决定的。这个时候就用到了断言。 检查点分为两个&#xff0c;一个是页面级别的检查&#xff0c;包括网页的标题和网址&#xff0c;以及是否包含某个文字 另一个检查点是页…

React入门教程:构建你的第一个React应用

在当今快速发展的Web开发领域&#xff0c;前端技术日新月异&#xff0c;而React作为一款强大的JavaScript库&#xff0c;已经成为众多开发者的首选。React以其组件化、高效的性能和灵活的数据处理机制闻名于世&#xff0c;被广泛用于构建动态且复杂的用户界面。在本教程中&…

S7-1200PLC和V90总线伺服通过工艺对象实现定位控制(标准报文3应用)

1、V90伺服驱动器控制(PN版本) V90伺服驱动器控制(PN版本)_v90 pn 最简接线-CSDN博客文章浏览阅读303次。V90伺服驱动器脉冲控制常用参数和接线,请查看下面文章链接:SMART PLC和V90伺服实现外部脉冲位置控制-CSDN博客。_v90 pn 最简接线https://rxxw-control.blog.csdn.net/…

《Windows API每日一练》4.2 设备环境

在第三章我们已经使用设备环境句柄在窗口客户区绘图了。在图形输出设备&#xff08;比如屏幕或者打印机&#xff09;上绘制图形&#xff0c;必须首先获取设备环境&#xff0c;即DC的句柄。当 Windows把这个句柄交给你的程序&#xff0c;Windows同时也就给予你使用这个设备的权限…

【机器学习】机器学习与物流科技在智能配送中的融合应用与性能优化新探索

文章目录 引言机器学习与物流科技的基本概念机器学习概述监督学习无监督学习强化学习 物流科技概述路径优化车辆调度需求预测 机器学习与物流科技的融合应用实时物流数据分析数据预处理特征工程 路径优化与优化模型训练模型评估 车辆调度与优化深度学习应用 需求预测与优化强化…

vue2 + element-ui,前端配置化表单封装(2024-06-14)

技术栈是 vue2 element-ui&#xff0c;主要能解决的问题就是 提高代码复用能力、提升开发效率&#xff0c;特别是需要开发多个大型表单系统的&#xff0c;配置化可以极大的提升效率&#xff0c;让你上班摸鱼不再是梦想&#xff01;为了早点下班&#xff0c;我们接着往下看吧&a…

C#客户端

控件 打开链接 Socket socket; // 打开连接 private void button1_Click(object sender, EventArgs e) {button1.Enabled false;button2.Enabled true;//1 创建socket客户端对象socket new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);// 2…

基于C#开发web网页管理系统模板流程-主界面统计功能完善

点击返回目录-> 基于C#开发web网页管理系统模板流程-总集篇-CSDN博客 前言 紧接上篇->基于C#开发web网页管理系统模板流程-主界面管理员入库和出库功能完善_c#web程序设计-CSDN博客 统计功能是管理系统很常见的功能&#xff0c;例如仓库管理系统要统计某时间段的出入库以…

【计算机视觉】人脸算法之图像处理基础知识(四)

图像的几何变换 图像的几何变换是指在不改变图像内容的前提下对图像的像素进行空间几何变换。主要包括图像的平移变换、镜像变换、缩放和旋转等。 1.插值算法 插值通常用来放缩图像大小&#xff0c;在图像处理中常见的插值算法有最邻近插值法、双线性插值法、二次立方、三次…

【仪器仪表/电源专题】浮地信号的测试的四种方案对比

接地信号和浮地信号区别 所有的电压测量都是差分测量&#xff0c;差分测量定义为两点之间的电压差。所以会分成两类&#xff1a; 1.参考地电平测量&#xff08;有时也叫接地信号&#xff09; 2.非参考地电平测量&#xff08;也称为浮地测量&#xff09; 测试信号可以分为接地信…