一,set用法介绍:
set是单词set(集合)的意思
只有一个键值,set当中不能存储相同的键值
所有的元素都会根据元素的键值自动被排序。(底层检索使用中序遍历算法)
相关函数:
(1)begin:返回一个迭代器,此迭代器指向set中到的第一个元素。
(2)end:返回一个迭代器,此迭代器指向set最后一个元素的下一个位置。
(3)rbegin:返回一个迭代器,此迭代器指向反向set中的第一个元素。
(4)rend:返回一个迭代器,此迭代器指向反向set中最后一个元素之后的位置。
(5)cbegin:返回一个常量迭代器,此迭代器指向set中到的第一个元素。
(6)cend:返回一个迭代器,此迭代器指向set最后一个元素的下一个位置。 (7)clear:清除set的所有元素。
(8)crbegin:返回一个常量迭代器,此迭代器指向反向set中的第一个元素。
(9)crend:返回一个常量迭代器,此迭代器指向反向set中最后一个元素之后的位置。
(10)find:返回一个迭代器,此迭代器指向set中其键与指定键相等到的元素的位置。
(11)insert:将元素或元素范围插入到set中的指定位置。 (12)size:返回set中元素的数量。
(13)swap:交换两个set的元素。
(1)插入(正向遍历):
采用insert()方法把元素插入到集合中,一般按元素值从小到大插入。使用前向迭代器对集合中序遍历,结果正好是元素排序后的结果。
#include<iostream>
#include<set>
using namespace std;
int main()
{
set<int> s;//创建set集合对象
s.insert(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;
}
输出:1 3 5 6
(2)反向遍历:
使用反向迭代器reverse_iterator可以反向遍历集合,输出的结果正好是集合元素的反向排序结果。它需要用到rbegin()和rend()两个方法,它们分别给出了反向遍历的开始位置和结束位置。
#include<iostream>
#include<set>
using namespace std;