首页 > 其他分享 >set容器详解

set容器详解

时间:2024-03-15 15:02:19浏览次数:15  
标签:返回 容器 set 迭代 int 元素 详解 include

set 是关联容器,含有键值类型对象的已排序集,搜索、移除和插入拥有对数复杂度。set 内部通常采用 红黑树 实现。平衡二叉树 的特性使得 set 非常适合处理需要同时兼顾查找、插入与删除的情况。

和数学中的集合相似,set 中不会出现值相同的元素。如果需要有相同元素的集合,需要使用 multiset。multiset 的使用方法与 set 的使用方法基本相同。

插入与删除操作

insert(x) 当容器中没有等价元素的时候,将元素 x 插入到 set 中。

erase(x) 删除值为 x 的 所有 元素,返回删除元素的个数。

erase(pos) 删除迭代器为 pos 的元素,要求迭代器必须合法。

erase(first,last) 删除迭代器在  范围内的所有元素。

clear() 清空 set。

查找操作

count(x) 返回 set 内键为 x 的元素数量。

find(x) 在 set 内存在键为 x 的元素时会返回该元素的迭代器,否则返回 end()。

lower_bound(x) 返回指向首个不小于给定键的元素的迭代器。如果不存在这样的元素,返回 end()。

upper_bound(x) 返回指向首个大于给定键的元素的迭代器。如果不存在这样的元素,返回 end()。

empty() 返回容器是否为空。

size() 返回容器内元素个数。

#include<iostream>//set容器
#include<set> //set头文件
using namespace std;
void solve()
{
    int n;
    cin >> n;
    set<int> q;
    while (n--)
    {
        int m;
        cin >> m;
        bool op = 1;
        for (int i = 0, a; i < m; i++)
        {
            cin >> a;
            if (op)
            {
                cout << a;
                q.insert(a); //将元素a插入set容器
                op = 0;
            }
            else
            {
                if (q.find(a) == q.end()) //q.find()查找元素  q.end()尾端元素
                {
                    cout << " " << a;
                }
                q.insert(a); 
            }
        }
        cout << "\n";
    }

}
int main()
{
    solve();
    return 0;
}
#include<iostream>
#include<vector>
#include<set>
using namespace std;
int main()
{
    vector<int> myVector = { 1,2,3,4,58 };

    cout << myVector[0] << endl;
    myVector.push_back(6);
    cout << myVector[5] << endl;
}
void solve()
{
    int n, k;
    cin >> n >> k;
    set<int> q;
    for (int i = 0,a; i < n; i++)
    {
        cin >> a;  q.insert(a);
    }
    int res = 0;
    for (auto x : q) //auto迭代器
    {
        res++;
        if (res == k)
        {
            cout << x << endl;
            return;
        }
    }
    cout << "no answer\n";
}
int main()
{
    solve();
    return 0;
}

标签:返回,容器,set,迭代,int,元素,详解,include
From: https://blog.csdn.net/2303_80209427/article/details/136723839

相关文章

  • frp软件配置信息详解
    frps.ini(服务端)配置文件解释说明################################################[common]服务端控制面板访问账号和密码,不设置则默认admin注意以及几个是我随便填写的,请根据自己的实际情况,自行修改。dashboard_user=userdashboard_pwd=password客户端连接令牌token......
  • 性能逆天的三端电容器-谈历代iphone电容器的变迁史
    早期苹果手机的硬件设计在业界享有很高的声誉,技术领先,主要体现在以下方面:整合性设计:苹果采用垂直整合的设计理念,掌控硬件和软件的整个生态系统。这种一体化设计使得硬件和软件之间更好地协同工作,提供更流畅、高效的用户体验。高质量的材料和制造工艺:苹果注重采用高质量的材......
  • setup factory添加注册表
       result=SessionVar.Get("%AppFolder%");proversion=SessionVar.Get("%ProductVer%");Registry.CreateKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\*******\\***")Registry.SetValue(HKEY_LOCAL_MACHINE,"SOFTWARE\\*******\\......
  • vue3中setup使用及其语法糖的用法
    使用setup语法糖后,不用写setup函数;组件只需要引入不需要注册;属性和方法也不需要再返回,可以直接在template模板中使用。.setup语法糖中新增的apidefineProps:子组件接收父组件中传来的propsdefineEmits:子组件调用父组件中的方法defineExpose:子组件暴露属性,可以在父组件中......
  • Django model select的各种用法详解
    Djangomodelselect的各种用法详解摘自:https://www.cnblogs.com/skbarcode/p/12584387.html基本操作#获取所有数据,对应SQL:select*fromUserUser.objects.all()#匹配,对应SQL:select*fromUserwherename='运维咖啡吧'User.objects.filter(name='运维咖啡吧')#......
  • Redis zset 底层结构
    Rediszset底层结构  概要  在Redis的五种主要数据类型中,zset(有序集合)类型可能是最复杂,但也是最强大的一种。zset不仅可以存储键值对,还可以为每个元素分配一个分数,然后根据这个分数进行排序。这使得Zset非常适合用于实现排行榜、时间线等功能。  一、Zset底层结......
  • 多线程系列(二十) -CompletableFuture使用详解
    一、摘要在上篇文章中,我们介绍了Future相关的用法,使用它可以获取异步任务执行的返回值。我们再次回顾一下Future相关的用法。publicclassFutureTest{publicstaticvoidmain(String[]args)throwsException{longstartTime=System.currentTimeMillis()......
  • Maven中optional标签详解(转)
    原文:https://blog.csdn.net/weixin_43888891/article/details/130510971作者:怪咖@来源:CSDN 一、前言<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.18</version><optio......
  • XML 简介及用法详解
    XML是一种用于存储和传输数据的与软件和硬件无关的工具。什么是XML?XML代表eXtensibleMarkupLanguage(可扩展标记语言)。XML是一种与HTML非常相似的标记语言。XML被设计用于存储和传输数据。XML被设计成具有自我描述性。XML不执行任何操作,也许有点难理解,但XML不执行任何操作。......
  • mysql explain 详解
    在进行mysql语句分析或优化时,通常都会用到explain语句,通过explain语句可以知道mysql的查询逻辑和是否使用索引或者索引是否生效等信息。语法格式:explainmysql语句如:explainselect*fromaccountarightjoinaccount_orderaoona.id=ao.user_idwhereao.user_id="0001";......