set/multiset(集与多集)

集与多集(set/multiset

与基本容器相比, 关联容器更注重快速和高效地检索数据的能力。 这些容器是根据键值 key 来检索数据的, 键可以是值也可以是容器中的某一成员。 这一类中的成员在初始化后都是按一定顺序排好序的。

setmultiset容器类(集和多集):#include

内部实现:红黑树

插入删除查找复杂度log(n)

它其中所包含的元素的值是唯一的(map)

允许重复元素

set容器详解:

头文件      #include

定义变量   setmyset;

主要成员函数

myset.insert(elem)    向集合中插入数据,如果已经存在则不插入

myset.erase(elem)   删除集合中值等于 elem的元素

myset.find(elem) 查找值等于elem的元素,若找到返回指向 elem的迭代器,否则返回end()

myset.clear() 清除集合中所有数据

myset.size() 返回集合中数据个数

 

multiset容器详解:

头文件                 #include

定义变量              multisetmymulset;

主要成员函数

mymulset.insert(elem)          向多重集合中插入数据,

mymulset.erase(elem) 删除多重集合中值等于 elem所有元素,若删除成功返回删除个数,否则返回0

mymulset.count(elem)          返回多重集合中数据elem出现的次数

 

multiset实例:

#include

#include

#include

using namespace std;

int main()

{

    setset1;

    for(int i=0;i<10;++i) set1.insert(i);

    for(set::iterator p=set1.begin();p!=set1.end();p++)

        cout<<*p<<" ";

    cout<<endl;

    if(set1.insert(3).second) cout<<"set insert success"<<endl;

    else cout<<"set insert failed"<<endl;

    if(set1.find(3)!=set1.end()){//查找元素3

        cout<<"find it.."<<endl;

        }

    else{

        cout<<" not find it.."<<endl;

    }

    if(set1.find(300)!=set1.end()){//查找元素300

        cout<<"find it.."<<endl;

    }

    else{

        cout<<"not find it.."<<endl;

    }

    int a[]={4,1,1,1,1,1,0,5,1,0};

    multiset A;

    A.insert(a,a+10);

    for(multiset::iterator q=A.begin();q!=A.end();q++)

        cout<<*q<<" ";

    cout<<endl;

    return 0;

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值