速成算法——入门之set

set的用法
1.set简介:
set是一个内部有序且不重复的集合,当需要对数据进行去重或者排序时,我们可以用set进行存储。
2.set的定义;

set<typename> name;
set<typename> Arrayname[arraysize];//定义set数组
set<int> a[100]//例

3.set的访问
set区别于vector的访问方法是,set只可以用迭代器来进行访问

    int a[5]={1,2,3,4,5};
    set<int> b(a,a+5);
    for(set<int>::iterator it=b.begin();it!=b.end();it++)
        cout <<*it<<' '<<endl;
    cout <<*b.begin()<<' ' <<*b.end();//区别于vector

4.set几个常见的操作:

在这(1)begin()//cout <<*s.begin();
    (2)end()
    (3)clear()
    (4)empty()
    (5)size()
    (6)count()
    (7)equal_range()//pair<set<int>::const_iterator,set<int>::const_iterator> pr;
    //pr=s.equal_range();cout <<pr.first<<' ' <<pr.second
    (8)erase(iterator)//删除迭代器指向的值
    (9)erase(first,second)//删除两个迭代器之间的值
    (10)erase(key_value)//删除该值
    (11)insert(key_vlue)
    (12)int a[]={};s.insert(a,a+3);
    (13)lower_bound(key_value)//返回大于或等于该值的第一个迭代器cout <<*s.lower_bound(3)
    (14)upper_bound(key_value)//返回大于该值的第一个迭代器
    set<int> s;
    int n,x;
    cin >>n;
    for(int i=0; i<n; i++)
    {
        cin >>x;
        s.insert(x);
    }
    for(set<int>::iterator it=s.begin(); it!=s.end(); it++)
        cout <<*it<<' ';
    cout <<endl;
    cout <<"begin_num is:"<<*s.begin()<<endl;
    cout <<"end_num is:"<<*s.end()<<endl;
    cout <<"count_num:"<<s.count(10)<<endl;//返回元素的个数
    cout <<"lower_bound_num is"<<*s.lower_bound(3)<<endl;//返回小于或等于3的第一个迭代器
    cout <<"upper_bound_num is"<<*s.upper_bound(3)<<endl;//返回大于3的第一个迭代器
    pair<set<int>::const_iterator,set<int>::const_iterator> pr;
    pr=s.equal_range(3);
    cout <<"第一个大于等于3的数:"<<*pr.first<<endl;
    cout <<"第一个大于3的数:"<<*pr.second<<endl;
    set<int> ss;
    for(int i=1; i<=5; i++)
        ss.insert(i);
    set<int>::iterator second;
    set<int>::iterator first;
    first=ss.begin();
    second=ss.begin();
    second++;
    second++;
    ss.erase(3);//删除迭代器指向的值ss.erase(iterator)
    ss.erase(first,second);//删除迭代器first、second之间的值
    ss.erase(1);//删除键值ss.erase(key_value)
    for(set<int>::iterator it=ss.begin(); it!=ss.end(); it++)
        cout <<*it<<' ' ;
    ss.insert(50);
    cout <<*(ss.find(50));//返回给定值的迭代器里插入代码片

5.题目练习:
PAT——A1063

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值