STL集合set

STL集合set

set是STL中的神器之一,它有两个功能

(1).排序

(2).去重

一.操作方法(需要头文件 set )

(1). 定义

  1. set<int> s 定义一个整型的集合s

(2). 插入和删除

  1. s.insert(元素) 在s中插入一个元素

  2. s.erase(数值) 删除集合s中等于这一数值的元素

  3. s.clear() 删去集合s中的所有元素

(3).检索

  1. s.find(元素) 返回该元素在集合中的迭代器,若没有该元素,则返回end()

(4).遍历

请使用迭代器遍历

(5).其它

  1. s.begin() 返回s首部元素的迭代器

  2. s.end() 返回s尾部元素的后一个元素的迭代器

  3. s.size() 返回s的元素个数

  4. s.count(元素) 返回某个值元素的个数

  5. s.empty() 判断s是否为空

(6).

例1

#include<iostream>
#include<set>
using namespace std;
int main()
{
    set<int> s;
    s.insert(5); //第一次插入5,可以插入
    s.insert(1);
    s.insert(6);
    s.insert(3);
    s.insert(5); //第二次插入5,重复元素,不会插入
    set<int>::iterator it; //定义前向迭代器
    //中序遍历集合中的所有元素
    for(it = s.begin(); it != s.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;
    return 0;
}

例2

#include<iostream>
#include<set>
using namespace std;
int main()
{
    set<int> s;
    s.insert(5); //第一次插入5,可以插入
    s.insert(1);
    s.insert(6);
    s.insert(3);
    s.insert(5); //第二次插入5,重复元素,不会插入
    set<int>::iterator it; //定义前向迭代器
    //中序遍历集合中的所有元素
    for(it = s.begin(); it != s.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;
    return 0;
}

例3

#include<iostream>
#include<set>
using namespace std;
int main()
{
    set<int> s;
    s.insert(5); //第一次插入5,可以插入
    s.insert(1);
    s.insert(6);
    s.insert(3);
    s.insert(5); //第二次插入5,重复元素,不会插入
    set<int>::iterator it;
    it = s.find(6); //查找键值为6的元素
    if(it != s.end())
        cout << *it << endl;
    else
        cout << "not find it" << endl;
    it = s.find(20);
    if(it != s.end())
        cout << *it << endl;
    else
        cout << "not find it" << endl;
    return 0;
}

例4

#include <cstdio>
#include <set>
using namespace std;
int main() {
    set <int> s;
    int a;
    for(int i = 0; i < 10; i++)
        s.insert(i);
    for(int i = 0; i < 5; i++) {
        scanf("%d", &a);
        if(!s.count(a)) //不存在
            printf("does not exist\n");
        else
            printf("exist\n");
    }
    return 0;
}

本文为转载

posted @ 2018-08-30 20:31  安昙つきし  阅读(132)  评论(0)    收藏  举报