c++ STL set集合中包含的函数及其应用(一)

  1. set简介:
    set是STL中一种标准关联容器,它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection),差(set_difference) 并(set_union),对称差(set_symmetric_difference) 等一些集合上的操作,如果需要集合中的元素允许重复那么可以使用multiset元素。

  2. set常用函数
    (1)三种形成集合的方法:

#include
#include
using namespace std;
void print(multiset<int>& s){
    multiset<int>::iterator it=s.begin();
    while(it!=s.end()){cout<<*it<<" ";it++;}
    cout<int main(){
    int a[]={5,3,9,3,7,2,9,3};
    multiset<int>s1;
    //通过构造函数insert()添加集合。 
    for(int i=0;i<sizeof(a)/sizeof(int);i++)s1.insert(a[i]);
    print(s1);
    //通过复制构造函数set(const set& x)创建集合 
    multiset<int>s2(s1);print(s2);
    //通过构造函数set(conset value_type*first,const value_type* last)创建集合
    multiset<int>s3(a,a+sizeof(a)/sizeof(int));print(s3); 
}

输出展示:
c++ STL set集合中包含的函数及其应用(一)_第1张图片
(2)set常用的函数:

(话不多说直接上代码)

#include
#include
using namespace std;
void print(set<int>&s){
    set<int>::iterator it=s.begin();
    while(it!=s.end()){cout<<*it<<" ";it++;}
    cout<int main(){
    int a[]={3,2,9,4,5};
    set<int>s(a,a+sizeof(a)/sizeof(int));
    //反向遍历 
    set<int>::reverse_iterator it=s.rbegin();
    while(it!=s.rend()){cout<<*it<<" ";it++;}cout<//判断集合是否为空
    if(s.empty())puts("集合为空");else puts("集合不为空");
    //计算集合的大小
    cout<//一个集合中x值出现的次数
    cout<2)<//元素检索
    set<int>::iterator te=s.find(5);
    if(te==s.end())puts("没找到");
    else puts("找到了");
    set<int>::iterator iii=s.lower_bound(3);
    cout<<*iii<set<int>::iterator ttt=s.upper_bound(2);
    cout<<*ttt<//删除元素
    set<int>::iterator itt=s.find(2);
    s.erase(itt); print(s);//删除迭代指针itt处的元素
    s.erase(5);print(s);//删除元素值等于key的元素.

} 

(3)equal_range,pair,count,size用法举例:

#include
#include
using namespace std;
int main(){
    int a[]={5,3,9,3,7,2,9,3};
    set<int>myset(a,a+sizeof(a)/sizeof(int));
    multiset<int>mymultiset(a,a+sizeof(a)/sizeof(int));

    pair<set<int>::iterator,set<int>::iterator>s1;
    pair<multiset<int>::iterator,multiset<int>::iterator>s2;

    s1=myset.equal_range(3);
    s2=mymultiset.equal_range(3);

    int ncount=myset.count(3);
    int nMulticount=mymultiset.count(3);

    set<int>::iterator te;
    cout<<"set(搜索值等于3的元素):"<for(te=s1.first;te!=s1.second;te++)cout<<*te<<" ";cout<cout<<"个数是:"<cout<<"总个数是:"<multiset<int>::iterator it;
    cout<<"multiset(搜索值等于3的元素):"<for(it=s2.first;it!=s2.second;it++)cout<<*it<<" ";cout<cout<<"个数是:"<cout<<"总个数是:"<

结果展示:
c++ STL set集合中包含的函数及其应用(一)_第2张图片
未完待续……..

你可能感兴趣的:(知识点,STL)