注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

fudq's AC Road

何以解忧,唯有AC!

 
 
 

日志

 
 

STL——Set用法  

2013-03-18 18:25:58|  分类: ACM-Steps |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在cf上用set水了一题set,于是想总结下set用法,查了下百科和借鉴了前辈写的博客,总结如下:
集合set是一种容器,包含元素都是唯一的,集合中的元素按一定的顺序排好,具体实现采用了红黑树的平衡二叉树的数据结构。
头文件#include<set>

set的几个常用函数用法:
begin() 返回指向第一个元素的迭代器
clear() 清除所有元素
count() 返回某个值元素的个数
empty() 如果集合为空,返回true(真)
end() 返回指向最后一个元素之后的迭代器,不是最后一个元素
equal_range() 返回集合中与给定值相等的上下限的两个迭代器
erase() 删除集合中的元素
find() 返回一个指向被查找到元素的迭代器
get_allocator() 返回集合的分配器
insert() 在集合中插入元素
lower_bound() 返回指向小于(或等于)某值的第一个元素的迭代器
upper_bound() 返回指向大于某值的第一个元素的迭代器
key_comp() 返回一个用于元素间值比较的函数
max_size() 返回集合能容纳的元素的最大限值
rbegin() 返回指向集合中最后一个元素的反向迭代器
rend() 返回指向集合中第一个元素的反向迭代器
size() 集合中元素的数目
swap() 交换两个集合变量
upper_bound() 返回大于某个值元素的迭代器
value_comp() 返回一个用于比较元素间的值的函数

例子:

#include <iostream>
#include <set>
using namespace std;
int main()
{
//定义容器set和迭代器
set<int> myset;
set<int>::iterator it,itlow,itup;

//往容器里插入元素
for(int i=1;i<=10;i++)
myset.insert(i*10);
myset.insert(55);

//输出容器元素个数
printf("%d\n",(int) myset.size());
//11

//依次输出容器元素
for(it=myset.begin();it!=myset.end();it++)
printf("%d ",*it);
printf("\n");
//10 20 30 40 50 55 60 70 80 90 100

//依次输出容器元素并删除
// while(!myset.empty())
// {
// printf("%d ",*myset.begin());
// myset.erase(myset.begin());
// }
// printf("\n");

//从容器里查找元素70并删除
it=myset.find(70);
myset.erase(it);

//输出容器里20和25的个数
printf("%d\n",myset.count(20));
printf("%d\n",myset.count(25));
//1
//0

//找到第一个小于等于30的容器,第一个大于60的容器
itlow=myset.lower_bound(30);
itup=myset.upper_bound(60);
for(it=itlow;it!=itup;it++)
printf("%d ",*it);
printf("\n");
//40 50 55 60

//找到集合中给定值相等的上下限的两个迭代器
pair<set<int>::iterator, set<int>::iterator > ret;
ret=myset.equal_range(30);
printf("lower bound points to: %d\n",*ret.first);
printf("upper bound points to: %d\n",*ret.second);
//lower bound points to: 30
//upper bound points to: 40

//清空容器
myset.clear();
return 0;
}


  评论这张
 
阅读(213)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018