C++ STL set

文章展示了C++编程中如何使用集合(set)这一数据结构,包括初始化、插入、删除元素,判断集合是否为空,获取元素数量以及使用lower_bound和upper_bound等函数进行查找操作。此外,还演示了集合的遍历和迭代器的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>
#include<vector>
#include<set>//集合头文件
using namespace std;
int main(){
    
//初始化
    set<int > ch;//默认升序排序
    set<int,greater<int >> ch1;//初始化降序排序
    set<char > ch2;
    set<double> ch3;
    //set<node> ch4;//结构体
    set<vector<int> > ch5;
    set<int > ch6[10];//set数组
    
//常用函数
    int num=1;
    ch.insert(num);//加入sum到集合,自动排序和去重,时间复杂度为 O(logN)
    ch.erase(num);//在集合中删掉num,返回0或1,0表示集合中不存在num
    ch.clear();//清空集合
    ch.empty();//判空,空则返回1,否则返回0
    ch.size();//返回集合元素个数
    ch.find(num);//在集合中查找num
        //ch.find()的返回值是一个迭代器,如果找到了给定的值那么迭代器指向该元素;否则迭代器指向集合的末尾
        /*
          set<int> ss;
          // 向集合中插入一些元素
          ss.insert(1);
          ss.insert(3);
          ss.insert(5);
          ss.insert(7);
          
          // 查找集合中是否有5这个元素
          set<int>::iterator it = s.find(5);
          
          // 如果找到了,输出"Found 5"
          if (it != ss.end())
          cout << "Found " << *it << endl;
          // 如果没有找到,输出"Not found"
          else
          cout << "Not found" << endl;
         */
        
    ch.lower_bound(num);//返回一个迭代器,指向第一个键值不小于x的元素
    ch.upper_bound(num);//返回一个迭代器,指向第一个键值大于x的元素
    
    ch.begin();//返回指向集合第一个元素的迭代器
    ch.end();//返回集合最后一个元素下一个位置的迭代器
    
    ch.rbegin();//返回指向集合最后一个元素的迭代器
    ch.rend();//返回第一个元素的前一个迭代器
    

    set<int > s;
    s.insert(5);
    s.insert(0);
    s.insert(1);
    s.insert(2);
    s.insert(3);
    s.insert(5);
    
    //cout<<s.lower_bound(2);//这样写是错误的,s.lower_bound返回值为一个迭代器,用*s.lower_bound访问元素
    cout<<*s.lower_bound(2);
    cout<<*s.upper_bound(2);
    
    cout<<s.size();
    s.clear();
    cout<<s.size();
    
//集合的遍历        
    s.insert(55);
    s.insert(66);
    s.insert(11);
    s.insert(22);
    s.insert(33);
    s.insert(55);
    
    set<int >::iterator it;//迭代器,可以通过*it访问集合元素
    for(it=s.begin();it!=s.end();it++)cout<<*it<<" ";//遍历
    cout<<endl;
    
//The end!    
    
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值