STL中set的相关运用

set容器简介:

set是一个容器,它用于储存数据并且能从一个数据集合中取出数据。

它的每一个元素的值必须是唯一的,而且系统会根据该值来自动讲数据排序。每个元素的值不能直接改变。

头文件#include<set>


 set的内部排序默认也是less<key>,key为关键字,就是数据类型

它提供一个双向的定位器来读写取数据;

它已经很据关键字和一个比较函数来排好序了;

它的每一个关键字都是唯一的,因此每一个值最多与一个元素对应

它是一个简单的容器,因为它的元素就是他的关键字

它是一个模板类, 因为它提供了一个一般且具有独立性的容器


1.set::insert

功能:插入一个数

2.set::begin

功能:返回第一个元素的定位器(iterator)的地址

#include<cstdio>
#include<cstring>
#include<set>
#include<algorithm>
using namespace std;
int main()
{
    set<char>st;
    set<char>::iterator cp;//定位器
    st.insert('a');
    st.insert('b');

    cp=st.begin();//定位到st的开始位置
    printf("%c\n",*cp);
}

3.set::end

功能:返回存储结束的地址

遍历所有set里面的值

#include<cstdio>
#include<cstring>
#include<set>
#include<algorithm>
using namespace std;
int main()
{
    set<char>st;
    st.insert('a');
    st.insert('b');
    for(set<char>::iterator i=st.begin();i!=st.end();i++)
        printf("%c",*i);
}

在这里加上一个反向迭代器reverse_iterator

#include<cstdio>
#include<cstring>
#include<set>
#include<algorithm>
using namespace std;
int main()
{
    set<char>st;
    st.insert('a');
    st.insert('b');
    for(set<char>::reverse_iterator i=st.rbegin();i!=st.rend();i++)
        printf("%c",*i);
}

上面注意begin和end前面都加上了一个r


4.set::erase

功能:与插入相同,可以高效的删除,并自动调整平衡

#include<cstdio>
#include<cstring>
#include<set>
#include<algorithm>
using namespace std;
int main()
{
    set<char>st;
    st.insert('a');
    st.insert('b');
    st.insert('c');
    st.erase('b');
    for(set<char>::reverse_iterator i=st.rbegin();i!=st.rend();i++)
        printf("%c",*i);
}



5.set::clear

功能:讲一个set容器的全部元素删除.

#include<cstdio>
#include<cstring>
#include<set>
#include<algorithm>
using namespace std;
int main()
{
    set<char>st;
    st.insert('a');
    st.insert('b');
    st.clear();
    if(st.empty())
    {
        printf("已清楚掉所有\n");
    }
}

6.set::find,若找到,返回的是迭代器的位置,否则返回最后一个元素后面的一个位置(结束位置)


#include<cstdio>
#include<cstring>
#include<set>
#include<algorithm>
using namespace std;
int main()
{
    set<char>st;
    st.insert('a');
    st.insert('b');
    st.insert('c');
    set<char>::iterator i=st.find('b');
    if(i==st.end())
        printf("没有找到\n");
    else
        printf("%c",*i);
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值