2020.2.27——STL初步
注:本文主要针对STL中的常用的操作进行总结
目录:
1.swap
2.sort
3.reverse
4.min,max(比较简单,暂且略过)
5._gcd
6.lower_bound && upper_bound
7.next_permutation
8.unique
1.swap
(1)目的:交换两个数的值
(2)手写 代码实现:
#include<iostream>
using namespace std;
inline void swap(int &x,int &y){
int temp;
temp=x;
x=y;
y=temp;
}
int main(){
int a,b;
cin>>a>>b;
swap(a,b);
cout<<a<<" "<<b;
return 0;
}
(3)STL使用
对a,b两个数进行swap操作
swap(a,b);
注:此处STL相对较慢,而手写代码量小,推荐自行手写
2.sort
(1)目的:对数组元素进行排序
注:非自定义cmp时,默认为从小到大排序
(2)使用:
(其实手写快排比这个快。。。。。。)
sort(start,end,cmp); //cmp可不填
//start是排序起始位置,end即排序结束位置,cmp即排序方式
//如:sort(a,a+10)
3.reverse
(1)目的:
用于反转在[a,b)范围内的数据顺序(其包括a指的元素,但不包括b指的元素);
(2)使用:
reverse(start,end);
/* e.g.
char s[]="abcdefgh"
reverse(s,s+strlen(s));
*/
//结果为:hgfedcba
//start为起始位置,end为结束位置
4.min,max(略过。。。。。。)
5.__gcd
(1)目的:求两个数的最大公因数
(2) 手写 版代码
inline int gcd(int x,int y){
if(y==0) return x;
else return(gcd(y,x%y));
//return y==0?x:gcd(y,x%y);
}
(3)使用:
__gcd(a,b); //注:gcd前需要添加两个下划线
这里真的推荐手写,毕竟代码量很小,STL那么慢。。。。。。
6.lower_bound && upper_bound
前言:start指起始位置,end指结束位置,k指要查找的数值
(1)lower_bound()
使用:lower_bound(start,end,k)
目的:从start到end-1二分查找** 第一个大于或等于k的数字 ** ,返回该数字的地址,不存在则返回end。用返回的地址减去起始地址start,得到下标。
(2)upper_bound()
使用:upper_bound(start,end,k)
目的:从数组的start位置到end-1位置二分查找** 第一个大于k的数字 **,返回该数字的地址,不存在则返回end。用返回的地址减去起始地址start,得到下标。
7.next_permutation
(1)目的:对数组进行全排列
注:在进行next_permutation操作之前,必须保证要操作的数组是有序的
(2)使用:
bool next_permutation(start,end)
//和sort,reverse等使用方法大致一样
8.unique
(1)目的:去除容器内相邻的重复的元素(只保留一个)
注:此处的“去除”指把重复元素移到容器最后。
通常使用前容器应该要是有序的(不是必要条件)。
(2)使用:
要想真正去除重复元素还需要使用erase()函数
unique(start,end);
//与sort等使用格式一样,不多赘述
//Example:unique(a,a+5);
-------------------------------------------------THE END------------------------------------------
2020.2.27——STL初步的更多相关文章
- HomeLede 2020.5.27更新 UPnP+NAS+多拨+网盘+DNS优化+帕斯沃/Clash 无缝集成+软件包
交流群:QQ 1030484865 电报 t.me/t_homelede 固件说明 基于Lede OpenWrt R2020.5.20版本(源码截止2020.5.27)及若干自行维护的软件包 结合 ...
- STL初步学习(vector)
前文 初三下学期进入新的学习,对于前两年的学习内容因为各种原因 上课打游戏,睡觉,看视频 已经遗忘,忘记如何使用,算是重新学习一次信息学,希望能尽快将以前的内容弥补上来,争取能在CSP-2020取得一 ...
- 【STL初步】不定长数组:vector + 集合:set + 映射:map
一.vector 为了节省空间,有时我们会使用动态数组vector. 定义动态数组 vector<类型名>变量名 vector<int>que //定义que为一个int类型的 ...
- (STL初步)不定长数组:vector
STL是指C++的标准模板库.(存储着一些常用的算法和容器) vector是一个不定长数组.它把一些常用的操作”封装“在vector类型内部. 例如,a是一个vector.1对元素的操作有,可以用a. ...
- STL初步学习(queue,deque)
4.queue queue就是队列,平时用得非常多.栈的操作是只能是先进先出,与栈不同,是先进后出,与之后的deque也有区别.个人感觉手写队列有点麻烦,有什么head和tail什么的,所以说 STL ...
- STL初步学习(set)
2.set set可以看作一个集合,可以实现自动排序(升序)和去重 在许多题目中,都可以使用这个模板库,减少很多操作,例如P1923 第k小数,当然,这道题有很多奇奇怪怪的做法,分值都不同,之后会讲解 ...
- IntelliJ IDEA 2020.2.3永久破解激活教程 - 2020.10.27
申明:本教程 IntelliJ IDEA 破解补丁.激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除 不花钱 的方式 IDEA 2020.2 激活到 2089 年 注意:教程适 ...
- 2016 - 1 - 27 javaScrip初步(一)
<head> </head> <body> <!-- The onclick attribute is the code that happens when ...
- stl 初步的使用
1.sort 和 lower_bound 例如 marble https://uva.onlinejudge.org/index.php?option=com_onlinejudg ...
随机推荐
- 震撼!全网第一张源码分析全景图揭秘Nginx
不管是C/C++技术栈,还是PHP,Java技术栈,从事后端开发的朋友对nginx一定不会陌生. 想要深入学习nginx,阅读源码一定是非常重要的一环,但nginx源码量毕竟还是不算少,一不小心就容易 ...
- Python实战---制作专属有声小说(调用百度语音合成接口)
这一次的目标是使用百度云的人工智能接口,实现文字转语音的实时转换,将小说文字转换成语音朗读出来. 百度云接口调用 百度的这个接口对于我们普通用户非常友好,他的很多功能都是免费的,而且我们每天可以免费调 ...
- 结束基础,开始MVC之旅!
今天终于把前端Extjs和基础折腾完,虽然每一个都只是实现一个小的实例,但是也算是把.NET基础和前端基础顺了一遍.也算是提升.不足就是高级的知识点并没有吃透,比如委托,lamda之类的,还得在后面的 ...
- 爬取腾讯网的热点新闻文章 并进行词频统计(Python爬虫+词频统计)
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:一棵程序树 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...
- Python语法详解
python语法解析 目录 python语法解析 一.顺序结构 二.分支结构 2.1 if 的基本语法 2.2 if 的基本应用 三.循环结构 3.1 while 语法 3.1.1 语法结束条件 3. ...
- L17 AlexNet VGG NiN GoogLeNet
深度卷积神经网络(AlexNet) LeNet: 在大的真实数据集上的表现并不尽如⼈意. 1.神经网络计算复杂. 2.还没有⼤量深⼊研究参数初始化和⾮凸优化算法等诸多领域. 机器学习的特征提取:手工定 ...
- C# 基础知识系列- 12 任务和多线程
0. 前言 照例一份前言,在介绍任务和多线程之前,先介绍一下异步和同步的概念.我们之间介绍的知识点都是在同步执行,所谓的同步就是一行代码一行代码的执行,就像是我们日常乘坐地铁通过安检通道一样,想象我们 ...
- 爬虫与反爬相生相克,道高一丈魔高一尺,如何隐藏ID(附代码)
Python 反爬篇之 ID 混淆 作为爬虫的一方,如果知道了某个站点的数据自增 ID,那么就能轻而易举把整个站点都爬下来. 是不是有点耸人听闻,你去看很多大站例如油管.P 站等,他们都不会轻易把业务 ...
- SpringCloud(七)超时、重试
一.Ribbon(单独配置) 可以通过ribbon.xx来进行全局配置.也可以通过服务名.ribbon.xx来对指定服务配置 全局配置: ribbon: ConnectTimeout: 3000 #连 ...
- Intellij IDEA 基础设置,个性化设置,好用的设置→_→
Intellij IDEA 个性化设置 Appearance & Behavior 外观和行为 Keymap 快捷键 Editor 编辑器设置 Plugins 插件 Version Contr ...