众所周知,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. 【Maven】应用Maven生成jar,包含关联库

    1. java project直接export到处jar包就可以,但在导出的过程中需要指定main class入口. 2. spring boot的项目,应用maven管理库,希望打成jar包,部署到 ...

  2. Python基础(17)_面向对象程序设计(抽象类、继承原理、封装、多态,绑定方法)

    一.抽象类 抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化 1.在python中实现抽象类 import abc #利用abc模块实现抽象类 class All_file(metacl ...

  3. ZOJ 3961 Let's Chat 【水】

    题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3961 题意 给出两个人的发消息的记录,然后 如果有两人在连续M天 ...

  4. $git学习总结系列(2)——远程仓库

    本文主要介绍git本地仓库和GitHub远程仓库之间的交互和数据传输. 注:首先需要到github.com上注册一个账号. 1. 添加本地SSH Key到GitHub 要向GitHub远程仓库推送代码 ...

  5. WebSocket 的后记

    一个美好的概念可以让策划无比幼稚和疯狂, 比如 H5 改变世界呀,小程序替代 APP 呀,现在即时通信也被公司里的他们认为 so easy 了. 这很尴尬好吧,WebSocket(以下简称 ws) 的 ...

  6. js 和 jquery 里面几个获取宽高的调查

    罗列下 js 和 jquery 里面获取宽高的方法: obj.offsetWidth = $obj.outerWidth()  // offsetWidth obj.clientWidth = obj ...

  7. 什么是JavaBeans?

    参看维基百科,归纳出以下几条: JavaBeans是指符合某些标准的类, Bean这个名称用于涵盖这个标准, 其目的在于创建可重用的Java组件. 由于Bean是很“死板”的东西,因此它可以持久存储, ...

  8. js原生插件格式解析

    一个合格的插件必须满足以下要求: 1.拥有独立作用域与用户作用域隔离,插件内的私有变量不可影响用户定义的变量 2.拥有默认参数 3.提供配置方法让用户可改变参数 4.提供监听接口,以监听页面操作 5. ...

  9. 使用kibana进行简单的CRUD和版本控制

    使用: ##创建文档之前先创建索引 PUT /toov5 ##查询索引 GET /toov5 ##创建文档 /索引/类型/id PUT /toov5/user/1 { "name" ...

  10. Shell中数学计算/运算

    shell中的赋值和操作默认都是字符串处理. 1)使用let(只能进行整数运算)var=1let "var+=1"echo $var输出结果为2 注意:a)let几乎支持所有的运算 ...