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=210;
int main()
{
for(string input; getline(cin,input); cout<<‘0‘<<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()-1)///如果最大的不在最底部,就要先翻转,使最大的在底部,才能使下一次翻转时最大的在顶部
{
reverse(iMax,flap.end());
cout<<distance(flap.begin(),iMax)+1<<‘ ‘;///输出最大的元素与开始元素的距离,即是我们翻转了几次
}
reverse(i,flap.end());
cout<<distance(flap.begin(),i)+1<<‘ ‘;///.begin()指向的一直都是第一个元素,虽然reverse了,但是.begin()指向的还是一开始的第一个元素,由于我们是一步一步进行翻转,所以距离一开始的元素的距离+1就是我们翻转的次数。
}
}

}
return 0;
}

时间: 2024-10-10 01:44:44

deque中的细节问题,以及reverse和max_element的使用的相关文章

我的编程之路(十九) 开发中一些细节与启发

1.js的命名空间           如果写后台代码,分层是潜意识中的基本常识,但是一到了前台,却没了这种意识,归根结底还是js用的不多,也一直没有在意js的地位,直到现在富客户端的趋势与要求,使得很多代码都要在前台用js或其框架完成,所以对于js代码的管理就要像后台java代码一样有其规范了,而命名空间就是package,也是为了管理不同层次的代码. 2.闭包          闭包就是能够读取其他函数内部变量的函数.它的最大用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量的值

程序猿之---C语言细节17(求time_t的最大值、strlen求的是长度、malloc分配字符内存细节、switch的中default细节)

主要内容:求time_t的最大值.strlen求的是长度.malloc分配字符内存细节.switch的中default细节 #include <stdio.h> #include <time.h> int main() {     /*****************************************************************         time_t最大值测试     ************************************

Django中url的逆向解析 -&gt; Reverse resolution of URLs

之前的一篇文章中介绍了url的基本用法[Django的url用法] 解析的过程可以概括为URL request -> view calling 同时,django又提供了另一种解析方式 - Reverse resolution of URLs 它的解析过程为 view calling -> URL request 因为Django奉行的是DRY原则,所以使用这种方式,就无需对url地址进行硬编码.在原本需要硬编码url的地方,直接可以使用url的名字,然后逆向解析出url地址. Django提

SQL中的charindex函数与reverse函数用法

----------------------首先介绍charindex函数----------------------------- CHARINDEX函数返回字符或者字符串在另一个字符串中的起始位置. CHARINDEX函数调用方法如下: CHARINDEX ( expression1 , expression2 [ , start_location ] ) Expression1是要到expression2中寻找的字符中,start_location是CHARINDEX函数开始在expres

deque源码1(deque概述、deque中的控制器)

deque概述 vector是单向开口的连续性线性空间,deque则是一种双开的连续性空间,即两边都可以进行插入和删除操作(vector也可进行头部的删除.插入操作,但效率很差,不被接受). deque和vector最大差异,一是deque允许在常数时间内对头部元素进行插入和移除操作,二在于deque没有所谓的容量的概念,因为它是动态地以分段连续空间组合而成,随时可以增加一段新的空间并链接起来. 虽然deque也提供Random Access Iterator,但它的迭代器并不是普通指针,其复杂

345. 反转字符串中元音字母的位置 Reverse Vowels of a String

Write a function that takes a string as input and reverse only the vowels of a string. Example 1:Given s = "hello", return "holle". Example 2:Given s = "leetcode", return "leotcede" 题意:反转字符串中元音字母的位置 方法1:用栈保存元音字符串,时间

GA代码中的细节

GA-BLX交叉-Gaussion变异 中的代码细节: 我写了一个GA的代码,在2005测试函数上一直不能得到与实验室其他同学类似的数量级的结果.现在参考其他同学的代码,发现至少有如下问题: 1.在交叉和变异的操作后,应对新产生的个体的每一维度有上下界限制: 2.交叉操作,随机在两个个体上进行交叉.若两个个体相同,则没有做实值交叉.之前的代码忽略了这个问题.新修改的代码中,若两个个体相同,则选择下一个个体进行交叉: 3.变异操作后,结果不一定更好.先留下来精英个体nRemain,再轮盘赌选择N-

页面中图片细节放大展示

在很多的电商商品展示网页中,都会出现放大产品细节的功能,这里就根据主要原理,简单用css和js实现这个效果:实现原理:1.选择两张内容相同,大小不一致的图片,一个是要待选择细节的小图片,另一张是用来展示细节的大图片. 2.要出现“选择小图片哪个细节”就展示出“大图片相同部分的细节内容”,这里就牵扯到比例的问题,即小图片中,   鼠标选择出的细节大小与整个小图片的长宽比例,要和大图片展示出的区域与大图片的长宽比例一致,这样效果才会逼真,   如下图:    根据比例相等我们可以得到公式:h1/h2

OC类中一些细节问题(对象类存储、类中结构体的用法)

一:OC中得方法名 注意:方法名冒号和后面的and方法名冒号  都是方法名 一:对象的存储细节 类加载到代码区(包括类中得属性和方法).对象动态加载到堆内存中.指向对象的指针存放在栈区. 三:定义类常见的错误 定义类的时候,常见的错误 1)类的定义不能嵌套 2)不要漏写 @end 3) 不要忘记写实现类(如果忘记写了,编译不会报错,运行时候才报错) 4)定义成员变量的大括号经常漏写 5) 如果不写@interface 只有 @implementation 这可以,但是会报警告,建议不要这么写 6