set (1)

set迭代器采用中序遍历,检索效率高于vector,默认从小到大自动排序;set容器中的数值,一经更改,set会根据新值旋转二叉树,以保证平衡;时间复杂度logn;
insert输入;
指针指向输出;
代码如下

#include <stdio.h>
#include <set>
#include <iostream>
using namespace std;
int main()
{
    int a[100];
    set<int> s;
    for(int i=0;i<5;i++)
    {
        cin>>a[i];
        s.insert(a[i]);
    }
    for(set<int>::iterator it=s.begin();it!=s.end();it++)
    {
        cout<<*it;
    }
    return 0;
}


set 也可以实现从大到小排序 
加(greater<int>)

#include <stdio.h>
#include <set>
#include <iostream>
using namespace std;
int main()
{
    int a[100];
    set<int,greater<int> > s;
    for(int i=0;i<5;i++)
    {
        cin>>a[i];
        s.insert(a[i]);
    }
    for(set<int,greater<int> >::iterator it=s.begin();it!=s.end();it++)
    {
        cout<<*it;
    }
    return 0;
}

set可以删除单个元素,set的删除 ..............set.erase(2);表示删除2;

而vector不能在erase(元素的值),因为set中没有重复的元素;而vector有重复的元素,且是向量容器(每增加一个元素,就在后面延伸一个长度容纳该元素),如果删除一个元素,可能vector 有多个元素,无法确定删除哪个元素;

所以vector的删除需要用下标,v.erase(单个元素的下标),v.erase(区间的下标)...v.erase(  单个元素的下标 ,单个元素的下标);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值