is_sort原型:

::is_sorted

default (1)
  1. template <class ForwardIterator>
  2. bool is_sorted (ForwardIterator first, ForwardIterator last);
custom (2)
  1. template <class ForwardIterator, class Compare>
  2. bool is_sorted (ForwardIterator first, ForwardIterator last, Compare comp);

该函数是測试范围内的元素是否已经有序!

使用operator<或者comp来进行比較。

假设范围内的元素个数少于两个,总是返回true.

其行为类似例如以下:

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  1. template <class ForwardIterator>
  2. bool is_sorted (ForwardIterator first, ForwardIterator last)
  3. {
  4. if (first==last) return true;
  5. ForwardIterator next = first;
  6. while (++next!=last) {
  7. if (*next<*first) // or, if (comp(*next,*first)) for version (2)
  8. return false;
  9. ++first;
  10. }
  11. return true;
  12. }

一个简单的測试样例:

  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5. int main(int argv,char **argc)
  6. {
  7. vector<int> v1{1,2,3,4};
  8. vector<double> v2{4.0,5.0,3.5,6.0};
  9.  
  10. cout<<"v1=";
  11. for(int i:v1)
  12. cout<<i<<" ";
  13. cout<<endl;
  14.  
  15. if(is_sorted(v1.begin(),v1.end()))
  16. cout<<"v1 is sorted!"<<endl;
  17. else
  18. cout<<"v1 is not sorted!"<<endl;
  19.  
  20. cout<<"v2=";
  21. for(double i:v2)
  22. cout<<i<<" ";
  23. cout<<endl;
  24.  
  25. if(is_sorted(v2.begin(),v2.end()))
  26. cout<<"v2 is sorted!"<<endl;
  27. else
  28. cout<<"v2 is not sorted!"<<endl;
  29.  
  30. }

执行结果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXE4NDQzNTIxNTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

is_sorted_until原型:

std::is_sorted_until

default (1)
  1. template <class ForwardIterator>
  2. ForwardIterator is_sorted_until (ForwardIterator first, ForwardIterator last);
custom (2)
  1. template <class ForwardIterator, class Compare>
  2. ForwardIterator is_sorted_until (ForwardIterator first, ForwardIterator last,
  3. Compare comp);

该函数类似与is_heap和is_heap_until的关系。

返回第一个破坏序列有序的元素迭代器。

使用operator<或者comp来进行比較。

其行为类似与:
  1. 2
  2. 3
  3. 4
  4. 5
  5. 6
  6. 7
  7. 8
  8. 9
  9. 10
  10. 11
  1. template <class ForwardIterator>
  2. ForwardIterator is_sorted_until (ForwardIterator first, ForwardIterator last)
  3. {
  4. if (first==last) return first;
  5. ForwardIterator next = first;
  6. while (++next!=last) {
  7. if (*next<*first) return next;
  8. ++first;
  9. }
  10. return last;
  11. }

一个简单的样例:

  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5. int main(int argv,char **argc)
  6. {
  7. vector<int> v1{1,2,3,4,5};
  8. vector<double> v2{4.0,5.0,3.5,6.0,1.0};
  9.  
  10. cout<<"v1=";
  11. for(int i:v1)
  12. cout<<i<<" ";
  13. cout<<endl;
  14.  
  15. cout<<"v2=";
  16. for(double i:v2)
  17. cout<<i<<" ";
  18. cout<<endl;
  19.  
  20. auto it=is_sorted_until(v1.begin(),v1.end());
  21. if(it==v1.end())
  22. cout<<"v1 is sorted!"<<endl;
  23.  
  24. auto it2=is_sorted_until(v2.begin(),v2.end());
  25. cout<<"v2 the return is "<<*it2<<endl;
  26.  
  27. }

执行截图:



通过对照源码能够知道,第一个返回的是v1.end(),第二个返回的则是3.5!

——————————————————————————————————————————————————————————————————

//写的错误或者不好的地方请多多指导,能够在以下留言或者点击左上方邮件地址给我发邮件,指出我的错误以及不足,以便我改动,更好的分享给大家,谢谢。

转载请注明出处:http://blog.csdn.net/qq844352155

author:天下无双

Email:coderguang@gmail.com

2014-9-17

于GDUT

——————————————————————————————————————————————————————————————————


版权声明:本文博客原创文章,博客,未经同意,不得转载。

STL algorithmi算法s_sorted和is_sorted_until(28)的更多相关文章

  1. 常用的STL查找算法

    常用的STL查找算法 <effective STL>中有句忠告,尽量用算法替代手写循环:查找少不了循环遍历,在这里总结下常用的STL查找算法: 查找有三种,即点线面: 点就是查找目标为单个 ...

  2. 【STL】帮你复习STL泛型算法 一

    STL泛型算法 #include <iostream> #include <vector> #include <algorithm> #include <it ...

  3. STL基础--算法(排序)

    STL排序算法 排序算法要求随机访问迭代器 vector, deque, container array, native array 例子 vector<int> vec = {9,1,1 ...

  4. C++复习:STL之算法

    算法 1算法基础 1.1算法概述 算法部分主要由头文件<algorithm>,<numeric>和<functional>组成. <algorithm> ...

  5. STL所有算法简介 (转) http://www.cnblogs.com/yuehui/archive/2012/06/19/2554300.html

    STL所有算法简介 STL中的所有算法(70个) 参考自:http://www.cppblog.com/mzty/archive/2007/03/14/19819.htmlhttp://hi.baid ...

  6. 初探STL之算法

    算法 STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包括头文件<algor ...

  7. [C++ STL] 常用算法总结

    1 概述 STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<alg ...

  8. stl变易算法(三)

    本篇接着前面stl变易算法(一)和stl变易算法(二)继续讲述变易算法. 这里将介绍完余下的变易算法,主要有:填充fill.n次填充fill_n.随机生成元素generate.随机生成n个元素gene ...

  9. 28.STL常用算法

    #include <algorithm> 算法 常用版本 描述 返回Type std::find() find(_InIt _Fisrt,_InIt _Last, _Ty& _Va ...

随机推荐

  1. ExtJs迄今datefield控制设置默认值

    假设extjs4 datefield日期控件设置默认值.为当天的前一月,和后一月 Ext.Date.MONTH      月 Ext.Date.YEAR         年 Ext.Date.DAY  ...

  2. GitLab版本管理(转)

    GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似的功能,能够浏览源代码,管理 ...

  3. index_ss hint 使用的运行计划变化对照

    index_ss  hint 使用的运行计划变化对照 当中 buffer 代表:当前操作中发生的内存读次数,包括一致性读和当前读 尽管 emp 表记录数不多,可是buffer 读内存的次数区别还是有点 ...

  4. opengl微发展理解

    1.什么是OpenGL? 一种程序,可以与界面和图形硬件交互作用.一个开放的标准 2.软件管道 请看上图 - Apllication层     表示你的程序(调用渲染命令.如opengl API) - ...

  5. 软体project(两)——软体project

        每本书的第一章,都是在讲宏观的东西.软工也不例外.接下来.我们就要介绍软件project"是什么"的问题. 一.是什么? watermark/2/text/aHR0cDov ...

  6. [leetcode] Combination Sum and Combination SumII

    Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C wher ...

  7. UML部署图和图九组件图

    前言     UML大部分描写叙述了逻辑和设计方面的信息.实现图用来描写叙述实现方面的信息.实现图包含部署图和构件图. 构件图     1. 概念      构件图从软件架构的角度来描写叙述一个系统的 ...

  8. 谈话节目APE系列:如何成为技术达人

    作为一个程序猿,总有消退的前辈.或更年轻的同行.牛逼的人总是羡慕. 让我们搞自己痛苦的日子 BUG .头发很快结束了抓,人们扫两.修改一行代码.问题得以克服:例如,他们自己开发的十年,少付 10K , ...

  9. 第一章 工欲善其事 其利润—Android SDK工具(2)

    1.2设备管理工具-调试桥(ADB) 1.2.1ADB简单介绍 ADB全称是Android Debug Bridge,是Android SDK里自带的一个工具,用这个工具能够直接操作管理Android ...

  10. Unity3d 导入图像尺寸失真解决方案

    导入到unity3d内的图像被默认长宽变换为满足2^n关系. 例如以下图,我有张图片名称为984plus598表示我尺寸为984*598.拷贝到unity3d中后的大小为1024*512 方法一: 在 ...