stl-set
Posted shoulinniao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stl-set相关的知识,希望对你有一定的参考价值。
集合set:每个元素最多只出现一次,并且set中的元素已经从小到大排好序。
1.头文件include<set>
2. begin() 返回set容器的第一个元素的地址,想取元素就要加*
3.end() 返回set容器的最后一个元素地址,想取元素就要加*
4.clear() 删除set容器中的所有的元素
5.empty() 判断set容器是否为空,返回布尔类型
6.max_size() 返回set容器可能包含的元素最大个数,按字节算的,long long和double的最大元素个数一样,int和float一样
7.size() 返回当前set容器中的元素个数,在c++中也可以当做判断集合是否为空的标准
8.insert(a) 插入元素,会自动排序
9.find(a)(不实用)如果找得到,返回元素的迭代器,找不到就返回se.end(), (最后一个元素的下一个位置,se为set的变量名)
10.count(a) 如果存在元素,返回1,否则返回0,相当于判断元素存不存在
11.erase(a)删除集合中的元素a erase(it)删除集合中it迭代器处的元素 erase(it1,it2) 删除从迭代器it1到it2之间的元素
12.遍历输出迭代器,类似指针,当做是专门用在stl里面的就行
代码举例:
#include<stdio.h> #include<iostream> #include<set> using namespace std; int main() { set<int>se; se.insert(-5); se.insert(-1); se.insert(3); se.insert(1); se.insert(1);///重复插入 se.insert(7); se.insert(5);///无序插入 printf("now size =%d ",se.size()); ///遍历输出是有序的 for(set<int>::iterator it=se.begin();it!=se.end();it++) printf("%d ",*it); printf(" "); printf("it‘s first num is %d ",*se.begin()); printf("it‘s end num is %d ",*se.end()); se.erase(7);///直接删除元素 printf("7 is deleted,now size = %d ",se.size()); se.erase(se.begin());///通过迭代器删除元素 printf("the first number is deleted,now size = %d,and it‘s first num is %d ",se.size(),*se.begin()); printf("1 is found %d time ",se.count(1)); printf("999 is found %d time ",se.count(999)); se.clear(); printf("after se.clear(),size=%d ",se.size()); return 0; }
以上是关于stl-set的主要内容,如果未能解决你的问题,请参考以下文章
uoj#280[UTR #2]题目难度提升 对顶堆+STL-set