注:本文主要针对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初步的更多相关文章

  1. HomeLede 2020.5.27更新 UPnP+NAS+多拨+网盘+DNS优化+帕斯沃/Clash 无缝集成+软件包

    交流群:QQ 1030484865 电报 t.me/t_homelede   固件说明 基于Lede OpenWrt R2020.5.20版本(源码截止2020.5.27)及若干自行维护的软件包 结合 ...

  2. STL初步学习(vector)

    前文 初三下学期进入新的学习,对于前两年的学习内容因为各种原因 上课打游戏,睡觉,看视频 已经遗忘,忘记如何使用,算是重新学习一次信息学,希望能尽快将以前的内容弥补上来,争取能在CSP-2020取得一 ...

  3. 【STL初步】不定长数组:vector + 集合:set + 映射:map

    一.vector 为了节省空间,有时我们会使用动态数组vector. 定义动态数组 vector<类型名>变量名 vector<int>que //定义que为一个int类型的 ...

  4. (STL初步)不定长数组:vector

    STL是指C++的标准模板库.(存储着一些常用的算法和容器) vector是一个不定长数组.它把一些常用的操作”封装“在vector类型内部. 例如,a是一个vector.1对元素的操作有,可以用a. ...

  5. STL初步学习(queue,deque)

    4.queue queue就是队列,平时用得非常多.栈的操作是只能是先进先出,与栈不同,是先进后出,与之后的deque也有区别.个人感觉手写队列有点麻烦,有什么head和tail什么的,所以说 STL ...

  6. STL初步学习(set)

    2.set set可以看作一个集合,可以实现自动排序(升序)和去重 在许多题目中,都可以使用这个模板库,减少很多操作,例如P1923 第k小数,当然,这道题有很多奇奇怪怪的做法,分值都不同,之后会讲解 ...

  7. IntelliJ IDEA 2020.2.3永久破解激活教程 - 2020.10.27

    申明:本教程 IntelliJ IDEA 破解补丁.激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除 不花钱 的方式 IDEA 2020.2 激活到 2089 年 注意:教程适 ...

  8. 2016 - 1 - 27 javaScrip初步(一)

    <head> </head> <body> <!-- The onclick attribute is the code that happens when ...

  9. stl 初步的使用

    1.sort 和  lower_bound 例如     marble      https://uva.onlinejudge.org/index.php?option=com_onlinejudg ...

随机推荐

  1. 彻底理解Java对象与引用

    本文是最近在复习Java的时候读到的来自iteye博客的一篇文章,个人觉得写的很好,但貌似楼主许久没有维护该博客,害怕将来想回顾的时候找不到此文章,故在此重写文章,并修改了一些排版,有助于以后的学习查 ...

  2. Python常见数据结构-Tuple元组

    Python Tuple基本特点 元组与列表类似,不同之处在于元组的元素不能修改. 与字符串和列表一样,可以根据下标进行切片索引. 元组使用小括号,单一元素的元组定义是必须加一个逗号. Python ...

  3. istream_iterator && istream_iteratorbuf

    注意 读字符时, std::istream_iterator 默认跳过空白符(除非用 std::noskipws 或等价物禁用,而 std::istreambuf_iterator 不跳过.另外, s ...

  4. 关于Python 迭代器和生成器 装饰器

    Python 简介Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比 ...

  5. 通过STC15F2K60S2控制SIM900A发中英文短信,打电话

    本文通过串口通信,使用STC15系列单片机实现发短信打电话功能. 一. 注意事项 1. 首先要确定手机卡已经注册到网络,具备打电话发短信功能 2. 正确的硬件连接: P3.0-----STXD或者5V ...

  6. 最近遇到adb connection 问题,总结一下

    最近eclipse总是遇到adb connection问题,网上搜索了一些解决方法,在cmd tool工具下adb kill-server ,adb start-server ,甚至重启都无效.然后我 ...

  7. 简单的Tuple声明和输出

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. Linux-设备

    一.在Linux系统中,每个设备都被当成一个文件来对待. 在Linux系统中,几乎所有的硬件设备都在/dev这个目录内.

  9. python从零开始基础入门——开发环境搭建:Visual Studio Code

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:山海皆可平z PS:如有需要Python学习资料的小伙伴可以加点击下方 ...

  10. 代理模式是什么?如何在 C# 中实现代理模式

    代理模式 并不是日常开发工作中常常用到的一种设计模式,也是一种不易被理解的一种设计模式.但是它会广泛的应用在系统框架.业务框架中. 定义 它的 定义 就如其它同大部分 设计模式 的定义类似,即不通俗也 ...