c++ set用法详解
c++ stack用法详解
c++ set用法详解
- set
- set常用操作
- set单元素应用
- set多元素应用(结构体)
- 例题
set
set就是集合,STL的set用二叉树实现,集合中的每个元素只出现一次(参照数学中集合的互斥性),并且是排好序的(默认按键值升序排列)
访问元素的时间复杂度是O(log2n)O(\log_2n)O(log2n)
在c++中,set的头文件是#include<set>
set具有迭代器set<int>::iterator i
定义一个迭代器,名为i 可以把迭代器理解为C语言的指针
set常用操作
set<int> q; //以int型为例 默认按键值升序
set<int,greater<int>> p; //降序排列
int x;
q.insert(x); //将x插入q中
q.erase(x); //删除q中的x元素,返回0或1,0表示set中不存在x
q.clear(); //清空q
q.empty(); //判断q是否为空,若是返回1,否则返回0
q.size(); //返回q中元素的个数
q.find(x); //在q中查找x,返回x的迭代器,若x不存在,则返回指向q尾部的迭代器即 q.end()
q.lower_bound(x); //返回一个迭代器,指向第一个键值不小于x的元素
q.upper_bound(x); //返回一个迭代器,指向第一个键值大于x的元素q.rend(); //返回第一个元素的的前一个元素迭代器
q.begin(); //返回指向q中第一个元素的迭代器q.end(); //返回指向q最后一个元素下一个位置的迭代器
q.rbegin(); //返回最后一个元素
set单元素应用
#include<iostream>
#include<set>
using namespace std;
int main()
{set<int> q; //默认按升序排列 q.insert(5);q.insert(5);q.insert(5);cout<<"q.size "<<q.size()<<endl; //输出 1 ,在set插入中相同元素只会存在一个q.clear(); //清空setcout<<"q.size "<<q.size()<<"\n\n";q.insert(4);q.insert(4);q.insert(3);q.insert(3); q.insert(2);q.insert(1);cout<<"lower_bound "<<*q.lower_bound(3)<<endl; //返回3 cout<<"upper_bound "<<*q.upper_bound(3)<<"\n\n"; //返回4 set<int>::iterator i;for( i=q.begin();i!=q.end();i++) //set的遍历 cout<<*i<<" "; //输出1 2 3 4,可见自动按键值排序 cout<<endl;q.erase(4); //删除q中的 4 for(i=q.begin();i!=q.end();i++) //再次遍历set 只输出 1 2 3 cout<<*i<<" ";cout<<"\n\n"; set<int,greater<int>> p; //降序排列 p.insert(1);p.insert(2);p.insert(3);p.insert(4);p.insert(5);for(i=p.begin();i!=p.end();i++)cout<<*i<<" ";cout<<endl;return 0;
}
set多元素应用(结构体)
#include<iostream>
#include<set>
using namespace std;
struct node{int a,b;bool operator< (const node W)const{return a>W.a; //按a的值升序 }
}t;
int main()
{set<node> q;t.a=1;t.b=2;q.insert(t);t.a=4;t.b=2;q.insert(t);t.a=3;t.b=5;q.insert(t); set<node>::iterator i;for(i=q.begin();i!=q.end();i++){t=*i;cout<<t.a<<" "<<t.b<<endl;}return 0;
}
例题
题目:HDU - 2094 产生冠军
代码:
#include<iostream>
#include<set>
using namespace std;
int main()
{int n;string a,b;while(cin>>n && n){set<string> A,B;for(int i=0;i<n;i++){cin>>a>>b;A.insert(a);A.insert(b);B.insert(b);}if(A.size()-B.size()==1)cout<<"Yes\n";elsecout<<"No\n";}return 0;
}
c++ stack用法详解
c++ set用法详解相关推荐
- python argv 详解_Python3 sys.argv[ ]用法详解
sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个"外部"很关键,因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可 ...
- oracle中的exists 和 not exists 用法详解
from:http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.html oracle中的exists 和 not exists 用法详解 (2009-05- ...
- ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)
ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多) https://blog.csdn.net/qq_25221835/article/details/82762416 post ...
- python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解
本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...
- C++中substr()函数用法详解
C++中substr()函数用法详解 原型: string substr (size_t pos = 0, size_t len = npos) const; 返回一个新构造的string对象,其值初 ...
- php theme_path,PHP_Yii2主题(Theme)用法详解,本文实例讲述了Yii2主题(Theme) - phpStudy
Yii2主题(Theme)用法详解 本文实例讲述了Yii2主题(Theme)用法.分享给大家供大家参考,具体如下: 首先看看主要的配置方式: 'components' => [ 'view' = ...
- LayoutInflater的inflate函数用法详解
LayoutInflater的inflate函数用法详解 LayoutInflater作用是将layout的xml布局文件实例化为View类对象. 获取LayoutInflater的方法有如下三种: ...
- Ext.Net学习笔记22:Ext.Net Tree 用法详解
上面的图片是一个简单的树,使用Ext.Net来创建这样的树结构非常简单,代码如下: <ext:TreePanel runat="server"><Root> ...
- WinDbg用法详解
WinDbg用法详解 对WinDbg的方方面面作了详细的讲解. 转载于:https://blog.51cto.com/laokaddk/125111
- ios开发读取剪切板的内容_iOS中管理剪切板的UIPasteboard粘贴板类用法详解
一.自带剪切板操作的原生UI控件在iOS的UI系统中,有3个控件自带剪切板操作,分别是UITextField.UITextView与UIWebView.在这些控件的文字交互处进行长按手势可以在屏幕视图 ...
最新文章
- Java 自动装箱性能
- 路由(二)——动态路由简介与RIP协议
- 如何通过 Excel import 的方式导入测试数据到 SAP Commerce Cloud 服务器
- lua windows下编译
- Taro+react开发(97):问答模块04
- 《性能测试从零开始--LoadRunner入门》读书笔记(四)
- 还在4S店买车?《Boss1+1》张朝阳对话贾鸣镝“种草”购车新方式
- python常用代码大全-Python常用库大全及简要说明
- Linux-软件包管理-rpm命令管理-安装-卸载
- js实现轮播图点击按钮切换下一张图片
- 商务与经济统计 第三章案例
- matlab 拟合优度检验,χ~2拟合优度检验在教学中的应用及Matlab实现
- 流媒体服务器- Wowza安装
- nadcházející basketbalové boty velkoobchodní další
- 开启安卓虚拟机后一直停在控制台页面_金九银十要来了?不要慌,这些安卓 BAT高级面试题刷一刷...
- 两步彻底关闭Windows默认共享文件夹(含IPC$)
- android 人脸识别边框_android自定义Arcface人脸识别框/人脸抓拍框/人脸追踪框
- 种子的“选择”可影响地区生物多样性
- android拷机工具,Android 3DMark大更新:无敌拷机神器
- android波浪动画简书,Android贝塞尔曲线————波浪效果(大波浪)
热门文章
- Inverting Visual Representations with Convolutional Networks论文理解
- 微信小程序路线规划导航,选择起点和终点路线规划
- 短信API接口demo示例-C#/Message/Send
- 千古第一文人苏轼的众CP
- 【手写源码-设计模式17】-迭代器模式-基于客户与商品数据遍历
- 【深度学习+组合优化】深度学习和强化学习在组合优化方面有哪些应用?
- 从APP测试角度看新增长应用类型如何取得优势
- 计算机键盘重复设置,教你操作win10系统电脑键盘打字时总是出现重复字符的方案...
- JavaScriptTypeScript学习总结
- JavaScript学习简单总结