C++ set容器基本操作

set

所有元素都会在插入时自动被排序
set/multiset属于关联式容器,底层结构是用二叉树实现

set和multiset区别:
set不允许容器中有重复元素
multiset允许

1.构造:
set st;
set(const set &st);

2.赋值:
set& operator=(const set &st);

3.大小和交换
size();
empty();
swap(st);

4.插入和删除
insert(elem);
clear();
erase(pos);
erase(beg,end);
erase(elem);

#include <iostream>
using namespace std;
#include <set>

void print(set<int> &s)
{
    for(set<int>::iterator it=s.begin();it!=s.end();it++){
        cout<<*it<<" ";
    }
    cout<<endl;
}
void test01()
{
    set<int> s;
    s.insert(20);
    s.insert(40);
    s.insert(1);
    s.insert(2);

    print(s);
    //1 2 20 40
}

int main()
{
    test01();
    return 0;
}

5.查找和统计:
find(key); //查找key是否存在,存在返回该键的迭代器 若不存在,返回set.end()
count(key); //对于set而言,统计结果要么是0 要么是1 (set中无重复元素)

6.set和multiset区别:
set插入数据时会返回插入结果,表示是否插入成功
multiset不会检测数据,因此可以插入重复数据

#include <iostream>
using namespace std;
#include <set>

void test01()
{
    set<int> s;

    //set.insert(elem) 返回一个pair类型
    //pair类型第一位置是一个迭代器,第二个位置是一个bool数据类型
    pair<set<int>::iterator, bool> ret=s.insert(10);//插入成功返回True 插入失败返回False)

    if(ret.second){
        cout<<"插入成功"<<endl;
    }else{
        cout<<"插入失败"<<endl;
    }
    //插入成功

    ret=s.insert(10);
    if(ret.second){
        cout<<"插入成功"<<endl;
    }else{
        cout<<"插入失败"<<endl;
    }
    //插入失败

    
    multiset<int>ms;
    ms.insert(10);
    ms.insert(10);
    for(multiset<int>::iterator i=ms.begin();i!=ms.end();i++){
        cout<<*i<<" ";
    }
    //10 10
}

int main()
{
    test01();
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值