首页 > 其他分享 >【set容器】

【set容器】

时间:2023-06-24 19:22:52浏览次数:29  
标签:容器 set cout iterator int st include

set

定义

set又名集合,是一种内部自动排序、且不含重复元素的容器
● 有序
● 去重

遍历

只能用迭代器遍历

#include <set>
#include <cstdio>
using namespace std;
int main(){
    set<int> st;
    for (int i = 6; i > 0; i--)
    {
        st.insert(i);
    }
    for (set<int>::iterator it=st.begin();it!=st.end(); it++)
    {
        printf("%d ",*it); // 输出:1 2 3 4 5 6
    }

cout<<endl;

    for (auto x : st)
    {
        cout<<x<<' '; // 输出:1 2 3 4 5 6
    }
    return 0;
}

insert()

向容器内插入元素

st.insert(value); // 插入的元素被自动排序后放在对应的位置

find()

find()函数的返回值为迭代器类型。

// 核心代码
set<int>::iterator it = st.find(2);
#include<iostream>
#include<set>
using namespace std;
set<int> s;//定义set
int n;
int main()
{
    cout<<"请输入n:"<<'\n';
    cin>>n;

    cout<<"请输入n个元素:"<<'\n';
    for(int i=0;i<n;i++)
    {
        int t;
        cin>>t;
        s.insert(t);//插入数据到set中
    }

    cout<<"容器内元素如下:"<<'\n';
    for (auto x : s)
    {
        cout<<x<<' ';
    }
    cout<<'\n';
    cout<<"请输入要查找的数:"<<'\n';
    int ele;
    cin>>ele;
    if(s.find(ele)!=s.end()) // 如果集合容器 `st` 中不存在某个值 `value`,则 `st.find(value)` 函数会返回 `st.end()`.
    {
        cout<<ele<<" exists"<<endl;
    }else{
        cout<<"Not Found"<<endl;
    }
    return 0;
}
// 运行
请输入n:
5
请输入n个元素:
13 27 2 8 999
容器内元素如下:
2 8 13 27 999
请输入要查找的数:
68
Not Found

erase()

说到删除,集合容器的删除分删除单个元素删除一段区间两种



  • 删除单个元素

①删除迭代器

st.erase(it)
#include<iostream>
#include<set>
using namespace std;
set<int> s;//定义set
int main()
{
    for (int i = 1; i <= 10; i++)
    {
        s.insert(i);
    }
    s.erase(s.find(4)); // 删除指定元素的迭代器
    for (set<int>::iterator it = s.begin(); it != s.end(); it++)
    {
        cout<<*it<<' ';
    }
    
    return 0;
}
// 输出:
// 1 2 3 5 6 7 8 9 10


②删除元素

#include<iostream>
#include<set>
using namespace std;
set<int> s;//定义set
int main()
{
    for (int i = 1; i <= 10; i++)
    {
        s.insert(i);
    }
    s.erase(4); // 删除指定元素
    for (set<int>::iterator it = s.begin(); it != s.end(); it++)
    {
        cout<<*it<<' ';
    }
    
    return 0;
}
// 输出:
// 1 2 3 5 6 7 8 9 10



  • 删除区间

删除一个区间内的所有元素

#include <set>
#include <iostream>
using namespace std;
int main()
{
    set<int> st;
    for (int i = 1; i <= 10; i++)
    {
        st.insert(i);
    }
    set<int>::iterator l = st.find(2);
    set<int>::iterator r = st.find(5);
    st.erase(l, r); // 删除区间:[2,5)
    for (set<int>::iterator it = st.begin(); it != st.end(); it++)
    {
        cout<<*it<<' '; // 输出: 1 5 6 7 8 9 10 
    }
    return 0;
}


size()

获得set容器内元素的个数

#include <set>
#include <cstdio>
using namespace std;
int main(){
    set<int> st;
    for (int i = 100; i <=500; )
    {
        st.insert(i);//100 200 300 400 500
        i+=100;
    }
    printf("%d",st.size());//输出:5
    
    return 0;
}

clear()

清空容器内所有的元素

#include <set>
#include <cstdio>
using namespace std;
int main(){
    set<int> st;
    for (int i = 100; i <=500; )
    {
        st.insert(i);//100 200 300 400 500
        i+=100;
    }
    st.clear();//清空
    st.insert(999);
    set<int>::iterator it = st.begin();
    printf("%d",*it);//输出:999
    
    return 0;
}

set的用途

①去重

②升序排序




标签:容器,set,cout,iterator,int,st,include
From: https://www.cnblogs.com/shinnyblue/p/17501523.html

相关文章

  • python学习日志,五大容器的比较
    列表的使用:列表.append(元素):向列表中追加一个元素列表.extend(容器):将数据容器的内容依次取出,追加到列表尾部列表.insert(下标,元素):在指定下标处,插入指定的元素del列表[下标]:删除列表指定下标元素列表.pop(下标):删除列表指定下标元素列表.remove(元素):从前向后,翻除此......
  • MySQL的wait_timeout 参数 set global 设置不生效
    MySQL服务连接数突然暴增,登录服务查看大都是sleep进程,并且1分钟会启用一个新的连接,紧急处理方案是需要手动去释放连接数。登录服务器查看当前超时时间mysql>showvariableslike'%timeout%';+-----------------------------+----------+|Variable_name|Valu......
  • “Terminate Server”; . setqt4env; ./helloQT4 -qws;
    [root@FriendlyARM/sdcard]#./helloQT4QWSDisplay::Data::init:InvalidargumentClientcan'tattachtomainrammemory.Aborted{退出Qtopia2.2.0或者Qt4程序等一切Qt程序,退出Qtopia2.2.0的方法是:在Qtopia2.2.0中点“设置”中的“关机”可出现如下界面,点......
  • 6. 核心容器
    这里所说的核心容器,大家可以把它简单的理解为​ApplicationContext​,前面虽然已经用到过,但是并没有系统的学习,接下来咱们从以下几个问题入手来学习下容器的相关知识:如何创建容器?创建好容器后,如何从容器中获取bean对象?容器类的层次结构是什么?BeanFactory是什么?1.容......
  • memset 与 fill 函数的区别
    在使用时发现memset和fill函数有异同,为了防止考试的时候挂分,专门了解了一下。memset函数由于memset的底层实现是类似二进制实现的字节赋值,只能赋为\(0\),\(1\),\(INF\)或\(-INF\),有比较大的局限性。举个例子:\(int\)类型有\(4\)个字节,每个字节有\(8\)个数字,一......
  • Asynchronous & Synchronous Reset
    第1章复位的目的复位信号在数字电路里面的重要性仅次于时钟信号。对一个芯片来说,复位的主要目的是使芯片电路进入一个已知的,确定的状态。主要是触发器进入确定的状态。在一般情况下,芯片中的每个触发器都应该是可复位的。在某些情况下,当在高速应用程序中使用流水线触发器(移位寄......
  • 容器日志滚动清理
    cleancontainerslogs[root@k8s-master~]#dockerinfo|grepRoot//dockerrootdirDockerRootDir:/var/lib/dockercontainerlogs:/var/lib/docker/containers/container_id/xxxx.json.log#listlogssizefind/var/lib/docker/containers/-name*-json.log......
  • -- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the sys
     系统是centos7.6001、问题--CouldNOTfindOpenSSL,trytosetthepathtoOpenSSLrootfolderinthesystemvari 002、解决方法[[email protected]]#yum-yinstallopensslopenssl-devel 003、再次编译(刚才的报错解决)。  ......
  • MYSQL中find_in_set函数用法详解
    感谢参考:https://blog.csdn.net/carefree31441/article/details/1195636851、官方涵义(MySQL手册中语法说明)FIND_IN_SET(str,strlist):str要查询的字符串,strlist需查询的字段,参数以”,”分隔,形式如(1,2,6,8,10,22);该函数的作用是查询字段(strlist)中是否包含(str)的结果,返......
  • UE5 C++ TSet
    概念TSet是一种快速容器类,用于在排序不重要的情况下存储唯一元素TSet也是值类型,支持常规复制、赋值和析构函数操作,以及其元素较强的所有权TSet被销毁时,其元素也将被销毁。键类型也必须是值类型创建TSet<FString>FruitSet;添加元素Add将提供键加入setFruitSet.......