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类型定义 ...
随机推荐
- C# 使用vs2013 写 windows服务
第一步:添加windows服务项目 并起一个 好看的名字 第二步:添加安装程序 第三步:右键点击serviceProcessInstaller1属性,在Account中选择LocalSystem 第四 ...
- 《剑指offer》算法题第三天
今日题目: 斐波那契数列 青蛙跳台阶问题(及其变种:变态跳台阶) 矩形覆盖 旋转数组的最小数字 矩阵中的路径 机器人的运动范围 细心的同学会发现,第1,2,3题其实对应的是<剑指>书上的同 ...
- el-input和和filter结合实现实时搜索
<el-input placeholder="请选择日期" clearable prefix-icon="el-icon-search" v-model= ...
- python-Django框架
常用命令 生成应用 python manage.py start app(app_name) 开启服务器 python manage.py runserver 0.0.0.0:8001 声称以及修改数 ...
- Python列表解析和字典解析
python笔记_列表解析 相比于for循环,列表解析的语法是由底层c语言实现的,它和使用for循环遍历pyobject对象相比,性能会有很大的提升. 无条件子句的列表解析式 In [2]: [2*i ...
- Spring boot之热部署
springboot热部署 1.springloaded(热部署) 2.devtools(热部署) 一.springloaded 问题的提出: 在编写代码的时候,你会发现我们只是简单把打印信息改变了, ...
- 第三周课程总结&实验报告
课程总结 在这周对Java进行了更深层次的学习,Java的学习也变得越来越困难而有趣,加入了一些新的构造新的方法,还学习了一些简化代码的方式. 面向对象的基本概念 对于面向对象的程序设计有三个主要特征 ...
- win10上的docker怎么设置开机不要自动启动 [问题点数:20分,结帖人xyq1986]
次win开机都自动启动docker,感觉很耗资源,docker只是有时开发时需要用到,在docker的setting上的Start Docker Desktop when you log in取消了也 ...
- ActiveMQ 初学-1:ActiveMQ 创建连接对象
县创建mq的连接工厂对象 ActiveMQConnectionFactory // 1 建立ConnectionFactory 工厂对象,需要填入,需要填入用户名密码, // 用户名 密码 在 ...
- spark 笔记 5: SparkContext,SparkConf
SparkContext 是spark的程序入口,相当于熟悉的'main'函数.它负责链接spark集群.创建RDD.创建累加计数器.创建广播变量. ) scheduler.initialize(ba ...