STL-set 用法

下定决心来学一发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

发表评论

邮箱地址不会被公开。 必填项已用*标注