deque中的细节问题,以及reverse和max_element的使用
deque中使用迭代器进行运算的函数都默认以.end()为结束,而实际上.end()所返回的是最后一个元素的下一个位置,所以进行数据比较时,应对其-1才是对应的最后一个数据,而函数中则是直接使用.end()即可。
reverse函数用于翻转接受的起始位置和终点位置的元素,max_element函数用于找出接收的起始位置和终点位置之间的最大元素。头文件都为<algorithm>。
#include<iostream>
#include<stack>
#include<queue>
#include<string>
#include<sstream>
#include<iterator>
#include<algorithm>
using namespace std; const int maxn=;
int main()
{
for(string input; getline(cin,input); cout<<''<<endl)
{
cout<<input<<endl;
istringstream iss(input);
deque <int > flap;
for(int temp; iss>>temp; flap.push_front(temp));///push_front()函数用于从头部插入元素,因而flap中存储的即是按题目中输入顺序的逆序存储的
for(deque <int >:: iterator i=flap.begin(); i!=flap.end(); ++i)
{
deque<int>::iterator iMax = max_element(i,flap.end());
if(iMax!=i)///当顶端的元素不是最大元素时,就要进行翻转
{
if(iMax!=flap.end()-)///如果最大的不在最底部,就要先翻转,使最大的在底部,才能使下一次翻转时最大的在顶部
{
reverse(iMax,flap.end());
cout<<distance(flap.begin(),iMax)+<<' ';///输出最大的元素与开始元素的距离,即是我们翻转了几次
}
reverse(i,flap.end());
cout<<distance(flap.begin(),i)+<<' ';///.begin()指向的一直都是第一个元素,虽然reverse了,但是.begin()指向的还是一开始的第一个元素,由于我们是一步一步进行翻转,所以距离一开始的元素的距离+1就是我们翻转的次数。
}
} }
return ;
}
deque中的细节问题,以及reverse和max_element的使用的更多相关文章
- deque源码1(deque概述、deque中的控制器)
deque源码1(deque概述.deque中的控制器) deque源码2(deque迭代器.deque的数据结构) deque源码3(deque的构造与内存.ctor.push_back.push_ ...
- 你所不知道的 C# 中的细节
前言 有一个东西叫做鸭子类型,所谓鸭子类型就是,只要一个东西表现得像鸭子那么就能推出这玩意就是鸭子. C# 里面其实也暗藏了很多类似鸭子类型的东西,但是很多开发者并不知道,因此也就没法好好利用这些东西 ...
- Python中sorted(iterable, /, *, key=None, reverse=False)的参数中的斜杆是什么意思?
通过help(sorted)查看sorted的帮助文档,显示如下: Help on built-in function sorted in module builtins: sorted(iterab ...
- Java泛型中的细节
Java泛型中的细节 如果没有泛型 学习Java,必不可少的一个过程就是需要掌握泛型.泛型起源于JDK1.5,为什么我们要使用泛型呢?泛型可以使编译器知道一个对象的限定类型是什么,这样编译器就可以在一 ...
- SQL中的charindex函数与reverse函数用法
----------------------首先介绍charindex函数----------------------------- ...
- Android学习笔记之布局技巧以及布局中的细节介绍....
PS:休息两天,放一放手上的东西,做做总结... 学习内容: 1.Android中LinearLayout布局技巧... 2.layout中drawable属性的区别... 先简单的介绍一下dra ...
- GA代码中的细节
GA-BLX交叉-Gaussion变异 中的代码细节: 我写了一个GA的代码,在2005测试函数上一直不能得到与实验室其他同学类似的数量级的结果.现在参考其他同学的代码,发现至少有如下问题: 1.在交 ...
- react中这些细节你注意过没有?
react中的一些细节知识点: 1.组件中get的使用(作为类的getter) ES6知识:class类也有自己的getter和setter,写法如下: Class Component { const ...
- Ubuntu安装Chrome过程中的细节
Ubuntu中的默认浏览器是Firefox,但是一直以来都认为Chrome更加优秀.下面记录一下在Ubuntu下安装Chrome的过程,也回顾一下Ubuntu系统中的一些细节. 大多数Linux安装软 ...
随机推荐
- koa学习
http://www.ruanyifeng.com/blog/2017/08/koa.html
- Win10系列:UWP界面布局基础3
在实际项目开发中,为控件属性赋值时经常会遇到属性值在设计时处于未知状态,而只有在应用程序运行时才能获取到.这种情况下,直接赋值方法是无法满足的,可以使用XAML标记扩展(Markup Extensio ...
- react中用pace.js
pace.js不支持npm, 所以只能直接下载下来,当作普通js引入 我在用的时候怎么都引不到组件里去用 后来终于找到方法了,直接上图了 1.先将pace文件下载来放在公共js目录下,pace.les ...
- JavaScript -基础- 函数与对象(三)正则、Match对象
一.正则对象 1.创建方法 1)方式一 var re_obj=new RegExp("\d+","g") 规则+模式(g 全局模式/i 不区分大小写/gi) r ...
- 每天CSS学习之text-shadow
今天学习的是CSS3的一个属性text-shadow.该属性能映射出文字的阴影. text-shadow一共就四个属性: text-shadow: h-shadow v-shadow [blur] ...
- Dell灵越 5559笔记本安装固态硬盘 BIOS设置
固态硬盘的安装这里就不详细说明了,安装一共有两种 直接把原有的磁盘卸了,换成SSD(这种方法最简单) 另一种是把光驱卸掉,然后换上SSD(这里建议把原来的磁盘换到光驱里面,把SSD加到原来磁盘安装的位 ...
- [Linux]Linux下修改snmp协议的默认161端口
一.Linux SNMP的配置 SNMP的简介和Linux下IPV4,IPV6地址的snmp协议开启可以参考上一个随笔:[Linux]CentOS6.9开启snmp支持IPV4和IPV6 二.修改默认 ...
- jstree使用新的
1.首先准备jstree树的dom元素 <p id="flowList_ul" class="flowList_ul"></p> 2.初 ...
- Remove duplicates from array II
//Given a sorted array, remove the duplicates in place such that each element appear only // once an ...
- StringUtils详细介绍
StringUtils详细介绍 public static void TestStr(){ #null 和 "" 操作~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...