STL中set的相关运用

来源:互联网 发布:semantic ui 怎么 js 编辑:程序博客网 时间:2024/04/19 23:16

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 0
原创粉丝点击