set的用法
前言:set有自动排序,去除重复元素的优点,在一些题目中可以大大减少程序运行时间
1、set的一些常见操作
begin()返回指向第一个元素的迭代器(迭代器和指针用法类似)
count(x)返回x值元素的个数
empty()如果集合为空,返回true
end()返回指向最后一个元素的迭代器
eraser(x)删除集合中的x元素
find(x)返回一个指向被查找元素的迭代器
insert(y)把y插进集合,继续保持顺序
max_size()返回集合能容纳元素的最大限值
size()返回集合中元素的总个数
clear()清空集合中的元素
swap(st2)交换两个集合变量(注意这里是两个集合的变量,st2指的是第二个集合名)
其实set的大部分操作是与vector类似的,不过set不支持随机访问,必须要使用迭代器去访问。由于set放入一个元素就会调整这个元素的位置,把它放到合适的位置,所以set中只有一个insert插入操作。
2、set的高级操作(这些直接复制粘贴的,都不会)
对于集合来说,我们一般有并集、交集、差集、补集这几种操作,所以在set的操作中我们也有类似的集合操作,它们都在#include的头文件下:
std::set_intersection() :这个函数是求两个集合的交集。
std::set_union() :求两个集合的并集
std::set_difference():差集
std::set_symmetric_difference():得到的结果是 第一个迭代器相对于第二个的差集 并上第二个相对于第一个的差集
3、怎么输出set中的元素:
要想输出set元素,我们要定义一个迭代器:
set<int>::iterator it;
for(it=st.begin();it!=st.end();it++)
cout << *it <<endl;