初学 STL-set

1.​​​​​​头文件​​​​

#include<set>
using namespace std;

 2.初始化

se<int>se;         //构造键类型为int的一个容器。
set<char>se;
set<int>s[MAXN];

3.相关函数

(1)   se.begin()          返回指向第一个元素的迭代器。

(2)   se.clear()           清除所有元素。

(3)   se.count()          返回某个元素的个数。

(4)   se.empty()         如果集合为空,返回true。

(5)   se.end()             返回指向最后一个元素之后的迭代器。

(6)   se.erase()          删除集合中的元素。

(7)   se.find()             返回一个被查找到元素的迭代器。

(8)   se.max_size()    返回集合中能容纳元素的最大限值。

(9)   se.size()             返回集合中元素的数目。

(10)  se.swap()          交换两个集合的变量。

(11)  se.insert()          在集合中插入元素。


4.插入元素

例:

for(i=0;i<n;i++)
{
    scanf("%d",&a[i]);
    se.insert(a[i]);		
}

insert()函数会将括号中的元素插入到集合se中。因为集合中的元素具有唯一性,所以如果插入相同的元素,集合se只储存一个。se中元素储存位置的顺序并不是按照插入顺序排列,会按照从小到大的顺序自动排列。

例:

#include<stdio.h>
#include<string.h>
#include<string>
#include<algorithm>
#include<iostream>
#include<set>
#define mmset(a,b) memset(a,sizeof(b),a);
using namespace std;

int main()
{
    int i,a[5]={1,3,5,2,4};
    set <int> se;           
    se.clear();             //清空se中的元素。
    for(i=0;i<5;i++)
    {
        printf("%d ",a[i]); //按顺序输出a[i]。
        se.insert(a[i]);    //将a[i]插入到集合se中。
    }
    printf("\n");
    set<int>::iterator it;                  //按顺序输出集合se中的元素
    for(it=se.begin();it!=se.end();it++)    
        printf("%d ",*it);                  
    printf("\n");
    return 0;
}

运行结果:1 3 5 2 4
         1 2 3 4 5
        

5.遍历和反向遍历

(1)遍历

set<int>::iterator it;
for(it=se.begin();it!=se.end();it++)
printf("%d",*it);

(2)反向遍历

set<int>::iterator rit;
for(rit=se.rbegin();rit!=se.rend();rit++)
printf("%d",*rit);

猜你喜欢

转载自blog.csdn.net/qiminhaomafan/article/details/81147958
今日推荐