下定决心来学一发STL......
set的常见用法
首先 想用set容器需要开头文件<set>
1:insert() 插入元素
#include <cstdio>
#include <set>
#include <algorithm>
using namespace std;
set<int>a;
int main()
{
a.insert(1);
}
2:set 遍历
使用迭代器 方法类似vector
#include <cstdio>
#include <set>
#include <algorithm>
using namespace std;
set<int>a;
set<int>::iterator it;
int main()
{
for(int i=1;i<=5;i++) a.insert(i);
for(it=a.begin();it!=a.end();it++) printf("%d ",*it);
return 0;
}
ans:
1 2 3 4 5
3:
begin() 返回set容器的第一个元素
end() 返回set容器的最后一个元素
分别输出set第一个元素和最后一个元素
#include <cstdio>
#include <set>
#include <algorithm>
using namespace std;
set<int>a;
set<int>::iterator it;
int main()
{
for(int i=1;i<=5;i++) a.insert(i);
printf("%d %d",*a.begin(),*a.end());
return 0;
}
ans: 1 5
4:
size() 返回当前set容器中的元素个数
clear() 清除set容器中所有元素
empty() 判断元素是否为空
#include <cstdio>
#include <set>
#include <algorithm>
using namespace std;
set<int>a;
set<int>::iterator it;
int main()
{
for(int i=1;i<=5;i++) a.insert(i);
printf("%d ",a.size());
a.clear();
printf("%d ",a.size());
if(a.empty()) printf("-1 ");
if(!a.size()) printf("-1 ");
return 0;
}
ans:
5 0 -1 -1
5:
count() 用来找set中某个键值出现的个数 (因为set不能重复 所以个数只有0 1)
相当于查找一个值是否在set里出现过
#include <cstdio>
#include <set>
#include <algorithm>
using namespace std;
set<int>a;
set<int>::iterator it;
int main()
{
for(int i=1;i<=5;i++) a.insert(i);
printf("%d %d",a.count(0),a.count(5));
return 0;
}
ans:
0 1
6:
erase(iterator) 删除定位器iterator指向的值
erase(first,second)删除定位器first和second之间的值
erase(key_value) 删除键值key_value的值
#include <cstdio>
#include <set>
#include <algorithm>
using namespace std;
set<int>a;
set<int>::iterator it;
int main()
{
for(int i=1;i<=10;i++) a.insert(i);
first=second=a.begin();
second++; second++;
a.erase(first,second);
a.erase(4);
a.erase(a.begin());
it=a.end(),it--,a.erase(it);
for(it=a.begin();it!=a.end();it++) printf("%d ",*it);
return 0;
}
7:
find() 查找一个键值 并返回定位器 查找失败返回end()
#include <cstdio>
#include <set>
#include <algorithm>
using namespace std;
set<int>a;
set<int>::iterator it;
int main()
{
for(int i=10;i>=1;i--) a.insert(i);
it=a.find(2);
if(it!=a.end()) printf("true ");
else printf("false ");
it=a.find(20);
if(it!=a.end()) printf("true");
else printf("false");
}
ans:
true false