C++ STL set

#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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用提供了一些使用set的常见操作和方法。如果要访问set中的最后一个元素,有几种方法可以实现。第一种方法是使用rbegin()函数,它返回一个指向set中最后一个元素的反向迭代器,然后可以使用*运算符来获取该元素的值。第二种方法是使用end()函数返回一个指向set末尾的迭代器,然后通过--运算符将迭代器移动到最后一个元素,再使用*运算符获取该元素的值。第三种方法是直接使用end()函数返回的迭代器,然后使用--运算符将迭代器移动到最后一个元素,再使用*运算符获取该元素的值。提供了一个重载<运算符的示例代码。在这个示例中,定义了一个结构体node,并在结构体中重载了<运算符。通过重载<运算符,我们可以自定义set中元素的比较规则。在main函数中,创建了一个set<node>类型的集合s,并插入了一些元素。通过遍历集合s,我们可以看到集合中的元素按照我们定义的比较规则进行排序。介绍了set中lower_bound和upper_bound函数的使用。lower_bound函数返回大于或等于给定值的第一个元素的迭代器,而upper_bound函数返回大于给定值的第一个元素的迭代器。在示例代码中,首先创建了一个set<int>类型的集合s,并插入了一些元素。然后使用lower_bound和upper_bound函数分别查找给定值的边界,并输出对应的元素值。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [C++ STLset详解](https://blog.csdn.net/qq_50285142/article/details/122304728)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【c++STL——第八讲】set系列 (常用知识点总结)](https://blog.csdn.net/m0_63233163/article/details/124645182)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值