set的简单食用方法介绍
set是C++中的一个STL,据说的是用红黑树实现的,可以用于一些题目的去重,排序。插入,删除统计个数操作的复杂度都是O(logN),获取和清空分别为O(1)和O(n),具有很好的泛用性。(当然stl会很慢,但是总比考场打200多行的红黑树好)
它的定义方式如下
set<*****> s;
其中*****是指该集合的类型,s是集合的名称
初始的时候集合都是空集
这里集合的定义要说一下,集合中
- 没有重复元素
就跟高中必修一中讲的集合类似
- 插入
.insert();插入新元素
如果这个元素已经出现了,就当输入数据在放屁(等于什么也没做)
set<string> s;
s.insert("1145141919810");
s.insert("hhhhhhh");
2.删除
.erase();删除新元素
记法:檫除的英文
s.erase("1145141919810");
当然这个元素要是真实存在在set里的,不然也会被当成放屁
3.查找
s.count()
记法:一个一个数(当然内部不可能真的一个一个数,不然就爆了
用法
if(s.count("1145141919810")
{
cout << "echou";
}
s.count("***")相当于一个bool类型的函数
它在set里面查找为“***”的元素,如果找到了返回1,没有就返回0;
4.遍历,打印每一个元素
遍历是用迭代器实现的,迭代器这个东西就好像一根手指,能够指出每一个东西
它的特点就是:用从小到大的顺序(字符串也是能排序滴),方便查找,打印,每一个存在集合中的元素(其实是难记
相当于用set<string>::iterator定义一个指针it,指向s的开头(可以理解为for循环中的int i = 1)
中间是it不指向set的结尾,即为:it != s.end();
最后 it ++
用法
for (set<string>::iterator it = s.begin(); it != s.end(); it ++) {
cout << *it << endl;//相当于指针,输出但不改变it的值
}
5.清空
.clear()
可用s.clear()清空set,同时会释放set所占用的内存
以上就是set的简单食用方法了(考场够你用的了)
如果您想了解更多关于set的用法,可以访问一下官方博客(前提你英语够好(你不会用百度翻译吗))
http://www.cplusplus.com/reference/set/set/?kw=set
求点赞