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的多列属性
CSS3 可以将文本内容设计成像报纸一样的多列布局 ㈠CSS3 多列属性 ㈡column-count 属性 ⑴语法:column-count: number|auto; ⑵值: ㈢c ...
- react 中的路由 Link 和Route和NavLink
route是配置,link是使用 https://blog.csdn.net/chern1992/article/details/77186118(copy) 嵌套路由一般使用Route,类似于vue ...
- TTTTTTTTTTTTT CF Good Bye 2015 C- New Year and Domino(CF611C) 二维前缀
题目 题意:给你一个n*m由.和#组成的矩阵,.代表可以放,#代表不可以,问在左上角(px,py)到(右下角qx,qy)这样的一个矩阵中,放下一个长度为2宽度为1的牌有多少种放法: #include ...
- 1143, 3997: Dilworth定理的简单应用
偏序集上的最小链覆盖等于最长反链 于是两道题 1143: [CTSC2008]祭祀river 求偏序集上的最长反链 转换成偏序集上的最小链覆盖 求个闭包,转换成最小路径覆盖,二分图匹配一发 #incl ...
- Unity3D_(游戏)甜品消消乐03_游戏UI设计
甜品消消乐01_游戏基础界面 传送门 甜品消消乐02_游戏核心算法 传送门 甜品消消乐03_游戏UI设计 传送门 (源码在文章最下面~) 实现过程 游戏界面UI 分数与时间的UI显示 有关游戏U ...
- spring boot 常用注解
@RestController和@RequestMapping注解 4.0重要的一个新的改进是@RestController注解,它继承自@Controller注解.4.0之前的版本,spring M ...
- 2018-2019-2 网络对抗技术 20165232 Exp7 网络欺诈防范
2018-2019-2 网络对抗技术 20165232 Exp7 网络欺诈防范 原理与实践说明 1.实践目标 理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法. 2.实践内容概述 简单应 ...
- vue实现百度下拉框
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- Retrofitting Analysis
Retrofitting Analysis To figure out the process of retrofitting[1] objective updating, we do the fol ...
- iframe嵌套的页面之间传值问题
项目中很多时候会遇到需要用 iframe 嵌套页面的情况.有时候会有这样的需求: iframe 嵌套的页面 A ,点击之后要跳到页面 B ,但是同时还需要 A 页面中的某个属性值. 此时可以先把 A ...