码迷,mamicode.com
首页 > 其他好文 > 详细

OI选手STL常用备注

时间:2020-11-26 14:30:00      阅读:3      评论:0      收藏:0      [点我收藏+]

标签:初始化   begin   lis   自定义   方式   容器类   lin   形式   默认   

本篇只是一个作为OI选手经常使用的\(STL\)模板中的集合,随时保持更新。

\(1、vector\)

它是一个向量类型的容器,可以容纳很多类型的数据,称为容器。

所需头文件

#include<vector>

初始化

vector<int> v;  //一维
vector<int> v[N];  //二维
vector<string int> v[N]; //不同的二维表达形式

操作

返回v的第一个元素

v.front();  

清空v

v.clear();  

判断是否为空, 空返回\(flase\), 不空返回\(true\)

v.empty();  

在末尾插入一个元素\(x\)

v.push_back(x);  

删除\(v\)的最后一个元素

v.pop_back();

删除\(v\)中的第\(n\)个到第\(m\)个元素

v.erase(v.begin() + n, v.begin() + m);  

\(v\)的第\(n\)个元素位置插入数值\(x\)

v.insert(v.begin() + n, x);

\(v\)的第\(n\)个蒜素位置插入\(x\)个数值为\(y\)的数

v.insert(v.begin() + n, x, y);

返回\(v\)中元素的个数

v.size();  

循环添加元素

for(int i = 1; i <= n; i++)
      v.push_back(i);

\(2、queue\)

\(queue\)为队列,它的模板类需要两个模板参数,一个是元素类型,另一个是容器类型,我们可以根据自己的需要来改变容器类型。它是先进先出的。

所需头文件

#include<queue>

初始化

queue<int> q;

操作

返回\(q\)中元素的个数

q.size();  

\(q\)的尾部添加一个元素\(x\)

q.push(x);  

返回\(q\)中最后一个元素

q.back();  

返回\(q\)中第一个元素

q.front();  

判断\(q\)是否为空, 空返回\(flase\), 不空返回\(true\)

q.empty();  

删除\(q\)中的第一个元素

q.pop();  

在比赛中,我们经常用\(queue\)实现另一种叫做优先队列的数据结构,它的好处是可以按照要求自动按照从大到小或从小到大排序。

priority_queue<Type, Container, Functional>

\(Type\) 就是数据类型,\(Container\) 就是容器类型(\(Container\)必须是用数组实现的容器,比如\(vector\),\(deque\)等等,但不能用 \(list\)\(STL\)里面默认用的是\(vector\)),\(Functional\) 就是比较的方式,当需要用自定义的数据类型时才需要传入这三个参数,使用基本数据类型时,只需要传入数据类型,默认是大顶堆
一般我们是这样使用的。

//升序队列
priority_queue <int,vector<int>,greater<int> > q;
//降序队列
priority_queue <int,vector<int>,less<int> >q;
//如果只想要升序的话这样默认的即可
priority_queue<int> a; 

其他的操作同上

OI选手STL常用备注

标签:初始化   begin   lis   自定义   方式   容器类   lin   形式   默认   

原文地址:https://www.cnblogs.com/zjh3928/p/14020609.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!