众所周知,c++的模板库是相当强大的。

下面我来列举一些常用的,(神奇的)

//部分材料选自《算法竞赛入门经典(第2版)》(刘汝佳)

一,algorithm (算法)

  min(a,b)-----------取最小值

max(a,b)-----------取最大值

//当然在实际应用当中可能无法直接使用,这时候我们需要自己编写函数

例:

#include<iostream>
#include<cstdio>
using namespace std;
struct node
{
int x,y;
} e[];
int max(int z1,int z2)
{
if(e[z1].x==e[z2].x)
{
if(e[z1].y>=e[z2].y)return z1;
else return z2;
}
else
if(e[z1].x>e[z2].x)return z1;
else return z2;
/*-----------------
以x为第一关键字,y为第二关键字,比叫结构体e[z1],e[z2].
-------------------*/
}
int main()
{
cin>>e[].x>>e[].y;
cin>>e[].x>>e[].y;
cout<<max(,);
return ;
}

  sort(int first,int last,int cmp)----------将[first,last)这样一个左闭右开的区间进行排序(默认从小到大)

  运用自定义的cmp函数,可以将它的排序自定义

  例:

int cmp(node x,node y)
{
return x.a==y.a?x.b<y.b:x.a<y.a;
}

  全例:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int cmp(int a,int b)
{
return a<b;
/*--------------
若a<b,表示从小到大排序
若a>b,表示从大到小排序*/
}
int a[];
int n;
int main()
{
cin>>n;
for(int i=;i<n;i++)
cin>>a[i];
sort(a,a+n,cmp);
/*----------
表示排序a[0-(n-1)]这些数
正好与我们的存储方式相同*/
for(int i=;i<n;i++)
cout<<a[i];
return ;
}

  lower_bound(first,last,element)--------查找第一个大于等于element的数所在的位置

  upper_bound(first,last,element)-------查找第一个大于element的数所在的位置

int p2=lower_bound(a,a+,)-a;
/*因为指针是有增减性的,
而它这里返回的是位置,
减去a这个数组所在的位置
,就是这个数在数组里的位置 */
cout<<a[p2];

  前提:必须是有序区间

//借图于流沙-岁月的博客

这是查找顺序

补充一点内容:迭代器(iterator)

度娘翻译:迭代器(iterator)有时又称游标(cursor),是程式设计的软件设计模式,可在容器物件(container,例如链表或阵列)上遍访的接口,设计人员无需关心容器物件的内容。它可以把抽象容器和通用算法有机的统一起来。

看不懂对不对?我也不懂。  

  简单来说,就是指向STL里容器的一个指针,返回其位置

  定义:vector<int> ::inerator p;(红色为必写内容)

  基本用法和指针一样,记录位置。

  '*'取该位置的值,'&'取这个位置

vector<int> ::inerator p;
p="位置";
p=*"位置";

  大概就是这样。

这样我们STL的两大内容就都说完了,关于容器,我们下次在说

byebye!(o゜▽゜)o☆[BINGO!]

常用stl(c++)的更多相关文章

  1. C++常用STL

    目录 C++ 常用STL整理 容器和配接器 list(链表) stack(栈) queue(队列) priority_queue(优先队列) set(集合) vector(向量) map&&a ...

  2. 常用STL使用指北

    常用STL使用指北 set和multiset set和multiset都是基于红黑树(显然是一个二叉搜索树)的STL. 定义 我们可以使用(multi)set<元素类型>名称来定义一个(m ...

  3. C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法

    每次忘记都去查,真难啊 /* C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法 */ /* vector常用用法 */ //头文件 #i ...

  4. ACM竞赛常用STL(一)

    全排列函数next_permutation STL 中专门用于排列的函数(可以处理存在重复数据集的排列问题) 头文件:#include <algorithm> using namespac ...

  5. 【pat】C++之刷题常用STL容器整理

    1.vector 动态数组,方便的动态扩容,方便的变量初始化(int类型默认初始化为0,bool默认初始化为false),可以用来实现邻接表(结点数太多的图). 头文件 #include<vec ...

  6. ACM竞赛常用STL(二)之STL--algorithm

    <algorithm>无疑是STL 中最大的一个头文件,它是由一大堆模板函数组成的.下面列举出<algorithm>中的模板函数: adjacent_find / binary ...

  7. ACM常用STL容器

    // STL(标准模板库),由三大部分组成:容器,算法,迭代器 // STL六大组件:container(容器),algorthm(算法),iterator(迭代器) // function obje ...

  8. 常用STL的常见用法

    //#pragma comment(linker, "/STACK:1024000000,1024000000") //#pragma GCC optimize(2) //#inc ...

  9. ACM常用STL

    转载于https://blog.csdn.net/riba2534/article/details/61929000 1.  stack stack<int>st;//栈st,用于存放in ...

随机推荐

  1. F110 BADI增强

    F110*JOB*&------------------------------------------------------------- F110 BADI FI_BSTM_MC_EXI ...

  2. 【WEB HTTP】缓存

    1. HTTP并不支持兄弟缓存,所以人们通过一些协议对HTTP进行了扩展,比如因特网缓存协议(Internet Cache Protocol, ICP)和超文本缓存协议(HyperText Cachi ...

  3. CentOS上快速安装saltstack

    查看当前centos版本号 cat /etc/redhat-release 查看内核版本 uname -r 主机 1.安装master(在第一台机器上安装master) 执行: wget -O /et ...

  4. yii2判断数据库字段is null

    $query = new Query; $query->select('ID, City,State,StudentName') ->from('student') ->]) -&g ...

  5. sql备份命令

    --将SQL脚本赋值给变量 ) set @SqlBackupDataBase=N'BACKUP DATABASE dbname TO DISK = ''E:\DBBackup\dbname-'+ ), ...

  6. MongoDB环境配置

    在官网上下载MongoDB可执行文件安装在电脑上后,想要运行需先安装路径下新建一个data文件夹,再在里面新建db文件夹用户存放数据库文件和相关配置. 在bin目录里面运行命令行: 这样MongoDB ...

  7. 主攻ASP.NET.4.5.1 MVC5.0之重生:根据产品类别显示菜单分类和分页

    路径访问的几种方式和分页效果 显示其它类别的效果和多数据分页效果 默认访问网站路径效果和多数据分页效果 URL路径访问可页面 http://localhost:5339/stationery http ...

  8. matplotlib模块之子图画法

    一般化的子图布局 首先要创建各个子图的坐标轴,传入一个四元列表参数:[x,y,width,height],用来表示这个子图坐标轴原点的x坐标.y坐标,以及宽和高.值得注意的是,这四个值的取值范围都是[ ...

  9. 图片的另一种展现—将后台图片编码直接展现为图片

    1.应用场景            开发过程中,遇到这样的需求:需要将服务器上的图片展现在页面上,但是图片所在服务器不是对外的,图片所在服务器与应用服务器也不在同一台机器上,这时候就需要在开发中先将图 ...

  10. juniper设置共享上网(注意事项)

    注意:出去的 策略  ,勾上  NAT 选项