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安装软 ...
随机推荐
- elasticsearch在CentOS环境下开机启动
验证环境,OS版本:CentOS-7-x86_64-Minimal-1708:ES版本:elasticsearch-6.2.2. 1.创建文件elasticsearch #!/bin/bash # # ...
- py 正在爬取第%d页的美眉图
#coding=utf-8import reimport requestsfrom bs4 import BeautifulSoupnums = 1num = 1while True: url = & ...
- ci框架memcached使用
首先第一步需要安装memcached扩展 安装方法这里就不叙述了 application/config/memcached.php配置 $config = array( 'default' => ...
- 8188EU 在AM335X MC183上以AP+STA工作
[目的] 8188EU 在AM335X MC183上以AP+STA工作. [环境] 1. Ubuntu 16.04发行版 2. linux-3.2.0-psp04.06.00.11 3. MC1 ...
- django_rq无法监听两个队列问题
django_rq是为django集成redis队列,这个用的少,一般会选择celery,没办法项目中用到了.用起来很简单,配置可以参考官方文档:https://pypi.org/project/dj ...
- python 类方法中参数使用默认值的方法
class A(): __init__(self, **arg): self.__dict__.update(arg) def M(self, config=None, section= ...
- java①
1.MyEclipse Eclipse Idea 等 都是 开发java的IDE工具! 2.面试题: JDK: java开发工具包!(Java Development TooKit)! 是整个java ...
- getopts的使用方法
getopts的使用 语法格式:getopts [option[:]] [DESCPRITION] VARIABLE option:表示为某个脚本可以使用的选项 ":":如果某个选 ...
- Centos7部署hadoop 3
一:ssh免密登录: 1)vim /etc/ssh/sshd_config去掉注释或添加 RSAAuthentcation yes PubkeyAuthentication yes # Authent ...
- DevExpress WinForms v18.2新版亮点(六)
行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WinForms v1 ...