set的常见用法
set的使用
set是什么
set是一个内部有序且不含重复元素的容器
用处
*使得元素自动有序
*去除重复元素
set的引入
# include <set>
using namespace std;
set的定义
set<typename> name;
//typename可以是任何类型,比如int、float、或者结构体、对象
定义的实际例子
set<int> name;
set<float> name;
set<double> name;
set<node> name;//node是一个结构体
set<typename> array[max_size];//定义一个set类型的数组
set的使用
set内部的元素的访问
set只能通过迭代器来进行访问
//定义迭代器的时候要填写实际的类型
set<typename>::iterator it;
set<int>::iterator it;
set<char>::iterator it;
除了vector和string外的stl容器都不支持*(it+i)的访问方式
元素的插入
# include <iostream>
# include <set>
using namespace std;
int main(void)
{
set<int> st;
st.insert(3);
st.insert(2);
st.insert(7);
st.insert(1);
for(set<int>::iterator it=st.begin();it!=st.end();it++)
{
cout<<*it<<endl;
}
return 0;
}
set常见函数的使用
insert
insert(x)将x插入set,并自动使得该元素有序且可以去重
find
find(value)查找到集合中值等于value位置的迭代器
# include <iostream>
# include <set>
using namespace std;
int main(void)
{
set<int> st;
for(int i=0;i<4;i++)
{
st.insert(i);
}
set<int>::iterator it=st.find(3);
cout<<*it<<endl;
return 0;
}
erase()
erase有两种用法:
1.删除单个元素
1)erase(it),it为要删除元素的迭代器
# include <iostream>
# include <set>
using namespace std;
int main(void)
{
set<int> st;
st.insert(1);
st.insert(2);
st.insert(3);
st.insert(4);
st.erase(st.find(2));
for(set<int>::iterator it=st.begin();it!=st.end();it++)
{
cout<<*it<<' ';
}
cout<<endl;
return 0;
}
2)erase(value),value为要删除的值
# include <iostream>
# include <set>
using namespace std;
int main(void)
{
set<int> st;
st.insert(1);
st.insert(2);
st.insert(3);
st.insert(4);
st.erase(4);
for(set<int>::iterator it=st.begin();it!=st.end();it++)
{
cout<<*it<<' ';
}
cout<<endl;
return 0;
}
2.删除一个区间内的元素
# include <iostream>
# include <set>
using namespace std;
int main(void)
{
set<int> st;
st.insert(1);
st.insert(2);
st.insert(3);
st.insert(4);
st.erase(4);
set<int>::iterator it=st.find(1);
st.erase(it,st.end());
for(set<int>::iterator it=st.begin();it!=st.end();it++)
{
cout<<*it<<' ';
}
cout<<endl;
return 0;
}
size()
用来获取集合元素数量
# include <iostream>
# include <set>
using namespace std;
int main(void)
{
set<int> st;
st.insert(1);
st.insert(2);
st.insert(3);
st.insert(4);
st.erase(4);
cout<<st.size()<<endl;
return 0;
}
clear()
清空所有元素
# include <iostream>
# include <set>
using namespace std;
int main(void)
{
set<int> st;
st.insert(1);
st.insert(2);
st.insert(3);
st.insert(4);
st.clear();
cout<<st.size()<<endl;
return 0;
}
set的常见用法的更多相关文章
- Linux中find常见用法
Linux中find常见用法示例 ·find path -option [ -print ] [ -exec -ok command ] {} \; find命令的参数 ...
- php中的curl使用入门教程和常见用法实例
摘要: [目录] php中的curl使用入门教程和常见用法实例 一.curl的优势 二.curl的简单使用步骤 三.错误处理 四.获取curl请求的具体信息 五.使用curl发送post请求 六.文件 ...
- Guava中Predicate的常见用法
Guava中Predicate的常见用法 1. Predicate基本用法 guava提供了许多利用Functions和Predicates来操作Collections的工具,一般在 Iterabl ...
- find常见用法
Linux中find常见用法示例 ·find path -option [ -print ] [ -exec -ok command ] {} \; find命令的参数 ...
- iOS 开发多线程篇—GCD的常见用法
iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...
- iOS开发多线程篇—GCD的常见用法
iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...
- [转]EasyUI——常见用法总结
原文链接: EasyUI——常见用法总结 1. 使用 data-options 来初始化属性. data-options是jQuery Easyui 最近两个版本才加上的一个特殊属性.通过这个属性,我 ...
- NSString常见用法总结
//====================NSStirng 的常见用法==================== -(void)testString { //创建格式化字符串:占位符(由一个%加一个字 ...
- [转]Linux中find常见用法示例
Linux中find常见用法示例[转]·find path -option [ -print ] [ -exec -ok command ] {} \;find命令的参 ...
- [转载]typedef常见用法
注:本文系转载,并修改了一些错误. typedef常见用法 1.常规变量类型定义 例如:typedef unsigned char uchar描述:uchar等价于unsigned char类型定义 ...
随机推荐
- CSS3的2D 转换——旋转,缩放,translate(),skew(),matrix()
2D转换方法:在平面对元素进行旋转,缩放,移动,拉伸. ㈠浏览器支持 ⑴2D转换效果有以下的浏览器支持: ⑵在编辑代码的时候要注明用哪种浏览器打开,在前面加上前缀,下面是编辑器的简写形式,以及前缀 ...
- python re.match与re.search的区别
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None:而re.search匹配整个字符串,直到找到一个匹配. #!/usr/bin/python impor ...
- vue实现v-model父子组件间的双向通信
首先讲清楚有个缺点:父页面若同时使用多个子组件,永远只会只能实现第一个双向驱动,我是新手,还在研究.如果有高手请指教,感谢! 子组件 <script> export default { m ...
- Tomcat 激活spring profile
springboot打包war部署到外部tomcat的时候指定profile启动 windows 在%tomcat%/bin下创建setenv.bat文件 linux 在%tomcat%/bin下创建 ...
- Nginx配置记录【例1】
A服务器,例: [root@localhost conf.d]# egrep -v "^#|^$" /etc/nginx/nginx.conf user nginx; worker ...
- 2019年9月17 发布 Java 13
Java 13 明天发布,最新最全新特性解读 2017年8月,JCP执行委员会提出将Java的发布频率改为每六个月一次,新的发布周期严格遵循时间点,将在每年的3月份和9月份发布. 目前,JDK官网 ...
- sessionStorge和localStorage的使用-踩坑记_09
sessionStorge的使用 sessionStorage 属性允许你访问一个 session Storage 对象.它与 localStorage 相似,不同之处在于 localStorage ...
- 9、kubernetes之statefulset控制器
一.StatefulSet 有状态副本集 必要的三个组件:headless service.StatefulSet.volumeClaimTemplate 准备pv apiVersion: v1 ki ...
- 跨IDC ycache原理和配置说明
总体介绍: 多idc缓存方案的invalid方案(如下图),是通过两个操作保证多个idc之间的缓存的高可用性和最终一致性的. 更新数据库后,发送invalid消息:invalid消息广播到其他id ...
- leecode 238除自身以外数组的乘积
class Solution { public: vector<int> productExceptSelf(vector<int>& nums) { //用除法必须要 ...