【STL】集合set

9 篇文章 0 订阅
  • 【1】本博客主要讲解了set的几种赋值方法
  • 【2】一些常用的操作count、equal_range等
  • -
/***********************************
*【1】set  multiset的几种赋值方法
*【2】count
*【3】equal_range
*【4】swap
************************************/
#include <iostream>
#include <set>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;

int main()
{
    以下是赋值方法
    int a[] = {5,3,9,3,7,2,9,3};
    multiset<int>myset,myset1;
    vector<int>iVec(a,a+sizeof(a)/sizeof(int));
    数组给multiset赋值
    for(int i = 0; i < sizeof(a)/sizeof(a[0]);i++)
    {
        myset.insert(a[i]);
    }
    for(multiset<int>::iterator it = myset.begin();it != myset.end();it++)
    {
        cout<<*it<<" ";
    }
    cout<<endl;
    vector<int>给multiset赋值
    //方法1
    //for(int i = 0; i < iVec.size();i++)//ok
    //{
    //  myset1.insert(iVec[i]);
    //}
    方法2
    //myset1.insert(iVec.begin(),iVec.end());/ok
    //单独一个数给multiset赋值
    myset1.insert(myset1.end(),1);ok
    myset1.insert(myset1.begin(),1);ok
    for(multiset<int>::iterator it = myset1.begin();it != myset1.end();it++)
    {
        cout<<*it<<" ";
    }
    cout<<endl;
    //multiset 给multiset 赋值
    //方法1
    //multiset<int>myset2(myset);ok
    ///方法2
    //multiset<int>myset2;//ok
    //myset2 = myset;
    ///方法3
    multiset<int>myset2(myset.begin(),myset.end());///ok

    for(multiset<int>::iterator it = myset2.begin();it != myset2.end();it++)
    {
        cout<<*it<<" ";
    }
    cout<<endl;
    以上是赋值方法
    ///
    set<int>myset4(a,a+sizeof(a)/sizeof(int));
    set<int>myset5(a,a+2);
    myset5.swap(myset4);swap
    copy(myset4.begin(),myset4.end(),ostream_iterator<int>(cout," "));
    cout<<endl;
    copy(myset5.begin(),myset5.end(),ostream_iterator<int>(cout," "));
    cout<<endl;
    int icount = myset4.count(3);
    int icount2 = myset2.count(3);
    pair<set<int>::iterator,set<int>::iterator>rangeset;
    pair<multiset<int>::iterator,multiset<int>::iterator>rangemultiset;
    rangeset = myset4.equal_range(3);equal_range
    rangemultiset = myset.equal_range(3);

    for(set<int>::iterator it = rangeset.first;it != rangeset.second;it++)
    {
        cout<<*it<<endl;
    }
    system("pause");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值