常用stl(c++)
众所周知,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++)的更多相关文章
- C++常用STL
目录 C++ 常用STL整理 容器和配接器 list(链表) stack(栈) queue(队列) priority_queue(优先队列) set(集合) vector(向量) map&&a ...
- 常用STL使用指北
常用STL使用指北 set和multiset set和multiset都是基于红黑树(显然是一个二叉搜索树)的STL. 定义 我们可以使用(multi)set<元素类型>名称来定义一个(m ...
- C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法
每次忘记都去查,真难啊 /* C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法 */ /* vector常用用法 */ //头文件 #i ...
- ACM竞赛常用STL(一)
全排列函数next_permutation STL 中专门用于排列的函数(可以处理存在重复数据集的排列问题) 头文件:#include <algorithm> using namespac ...
- 【pat】C++之刷题常用STL容器整理
1.vector 动态数组,方便的动态扩容,方便的变量初始化(int类型默认初始化为0,bool默认初始化为false),可以用来实现邻接表(结点数太多的图). 头文件 #include<vec ...
- ACM竞赛常用STL(二)之STL--algorithm
<algorithm>无疑是STL 中最大的一个头文件,它是由一大堆模板函数组成的.下面列举出<algorithm>中的模板函数: adjacent_find / binary ...
- ACM常用STL容器
// STL(标准模板库),由三大部分组成:容器,算法,迭代器 // STL六大组件:container(容器),algorthm(算法),iterator(迭代器) // function obje ...
- 常用STL的常见用法
//#pragma comment(linker, "/STACK:1024000000,1024000000") //#pragma GCC optimize(2) //#inc ...
- ACM常用STL
转载于https://blog.csdn.net/riba2534/article/details/61929000 1. stack stack<int>st;//栈st,用于存放in ...
随机推荐
- 字符串之_strncat
功能:将src的前n个字符添加到dest的后面 输入:dest,src,count 返回:ret #include <iostream> #include <assert.h> ...
- linux各个文件夹作用
linux /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基点,比如用户user的主目录就是/ho ...
- ajax图片上传功能
一.应用场景 当用户需要上传图片当做自己的头像时,预览的时候该图片需要在本地预览,不应该通过网络从服务器上取到之后预览 二.实现方法 1.方法1: 注释:给上传文件的input标签绑定一个change ...
- JAVA项目中常用的异常知识点总结
JAVA项目中常用的异常知识点总结 1. java.lang.nullpointerexception这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用 ...
- Linux Shell编程 条件判断语法
if条件判断语句 单分支 if 条件语句 语法格式: if [条件判断式];then 程序 fi 或者 if [条件判断式] then 程序 fi 在使用单分支 if 条件查询时需要注意几点: if ...
- [GUI] Linux中的图形管理
转:http://www.cnblogs.com/yongpenghan/p/4555619.html 做了一段时间linux下与QT事件相关的工作,经常会遇到X11,总是苦于无法完全理解其与linu ...
- OC_链表实现队列
@interface Node : NSObject @property(nonatomic,strong)NSString *value; @property(nonatomic,strong)No ...
- 吴恩达深度学习笔记(十二)—— Batch Normalization
主要内容: 一.Normalizing activations in a network 二.Fitting Batch Norm in a neural network 三.Why does ...
- .NET 中如何判断文件与目录
FileInfo fileInfo = new FileInfo(pth); if ((fileInfo.Attributes & FileAttributes.Directory) != 0 ...
- 使用 Apache Spark 让 MySQL 查询速度提升 10 倍以上
转: https://coyee.com/article/11012-how-apache-spark-makes-your-slow-mysql-queries-10x-faster-or-more ...