0.时刻提醒自己

Note: vector的释放

1.is_sorted

1.1 功能

检查 [first, last) 中的元素是否以不降序排序

1.2 异常

若算法无法分配内存,则抛出 std::bad_alloc

1.3 返回值

若范围中的元素已按不降序排序则为 true,否则,返回false

1.4 代码用法

// 期末成绩
int score[] = {99, 77, 30, 80, 90, 20}; // 1.排序前结果
std::cout << "排序前结果:";
for_each(std::begin(score), std::end(score), [](const int& item) {std::cout << item << " "; });
std::cout << " : is_sorted: " << std::boolalpha << std::is_sorted(std::begin(score), std::end(score)) << '\n'; // 2.执行排序
std::sort(std::begin(score), std::end(score)); // 3.排序后结果
std::cout << "排序后结果:";
for_each(std::begin(score), std::end(score), [](const int& item) {std::cout << item << " "; });
std::cout << " : is_sorted: " << std::boolalpha << std::is_sorted(std::begin(score), std::end(score)) << '\n';

1.5 输出结果

2. is_sorted_until

2.1 功能

检验范围 [first, last) ,并寻找始于 first 且其中元素已以不降序排序的最大范围。

2.2 异常

若算法无法分配内存,则抛出 std::bad_alloc

2.3 返回值

始于 first 且其中元素已以升序排序的最大范围。即满足范围 [first, it) 已排序的最后迭代器 it 。

2.4 Note

std::is_sorted_until 对空范围及长为 1 的范围均返回 last 。

2.5 用法

// 期末成绩
int score[] = {99, 77, 30, 80};
std::cout << "排序前:"; // 1.找到第一个没有按升序排列的元素
auto it = std::is_sorted_until(std::begin(score), std::end(score));
if (std::end(score) != it)
std::cout << "第一个没有升序排列的元素是:" << *it << std::endl;
else
std::cout << "数组元素全部按照升序排序\n"; // 2.执行排序
std::sort(std::begin(score), std::end(score)); // 3.再次核查数组排序情况
std::cout << "排序后:"; auto it_find = std::is_sorted_until(std::begin(score), std::end(score));
if (std::end(score) != it_find)
std::cout << "第一个没有升序排列的元素是:" << *it_find << std::endl;
else
std::cout << "数组元素全部按照升序排序\n";

2.6 输出结果

c++11之algorithm算法库新增is_sorted和sorted_until的更多相关文章

  1. c++11之 algorithm 算法库新增 minmax_element同时计算最大值和最小值

    0.时刻提醒自己 Note: vector的释放 1. minmax_element 功能 寻找范围 [first, last) 中最小和最大的元素. 2. 头文件 #include <algo ...

  2. C++ algorithm算法库

    C++ algorithm算法库 Xun 标准模板库(STL)中定义了很多的常用算法,这些算法主要定义在<algorithm>中.编程时,只需要在文件中加入#include<algo ...

  3. C++神奇算法库——#include<algorithm>

    算法(Algorithm)为一个计算的具体步骤,常用于计算.数据处理和自动推理.C++ 算法库(Algorithms library)为 C++ 程序提供了大量可以用来对容器及其它序列进行算法操作的函 ...

  4. scikit-learn 线性回归算法库小结

    scikit-learn对于线性回归提供了比较多的类库,这些类库都可以用来做线性回归分析,本文就对这些类库的使用做一个总结,重点讲述这些线性回归算法库的不同和各自的使用场景. 线性回归的目的是要得到输 ...

  5. 算法库:Matlab与C++混合编程

    算法库:Matlab与C++混合编程 最近做光流算法预演过程中,下载的源码中涉及到了Matlab和C++的混合编程.在同事Matlab2014的环境下,程序到是一下就运行通过了.但在我这Matlab2 ...

  6. 2019年11个javascript机器学习库

    Credits: aijs.rocks 虽然python或r编程语言有一个相对容易的学习曲线,但是Web开发人员更喜欢在他们舒适的javascript区域内做事情.目前来看,node.js已经开始向每 ...

  7. C++算法库学习__std::sort__对 vector进行排序_排序后就可以进行使用std::lower_bound进行二分查找(查找第一个大于等于指定值的迭代器的位置)__std::unique

    std::sort      对vector成员进行排序; std::sort(v.begin(),v.end(),compare);   std::lower_bound 在排序的vector中进行 ...

  8. mahout算法库(四)

    mahout算法库 分为三大块 1.聚类算法 2.协同过滤算法(一般用于推荐) 协同过滤算法也可以称为推荐算法!!! 3.分类算法 算法类 算法名 中文名 分类算法               Log ...

  9. 一个好用的多方隐私求交算法库JasonCeng/MultipartyPSI-Pro

    Github链接传送:JasonCeng/MultipartyPSI-Pro 大家好,我是阿创,这是我的第29篇原创文章. 今天是一篇纯技术性文章,希望对工程狮们有所帮助. 向大家推荐一个我最近改造的 ...

随机推荐

  1. 【MetDNA】基于代谢反应网络的大规模代谢物结构鉴定新算法

    代谢是生命体内化学反应的总称,其所包含的代谢物变化规律可直接反映生命体的健康状态.非靶向代谢组学(untargeted metabolomics)可以在系统水平测量生命体内生理或病理状态下所有代谢物的 ...

  2. 电脑盘符为什么从C盘开始?A盘和B盘去哪了?

    虽然我们几乎每天都在跟电脑打交道,但是不知道大家有没有过疑惑,为什么电脑盘符是从C盘开始命名呢?有没有A盘和B盘??A盘和B盘去哪了??? 其实,A盘和B盘是真实存在的. 在早期的DOS时代,计算机的 ...

  3. 省时省心DTM,广告转化无难题

    内容来源:华为开发者大会2021 HMS Core 6 App Services技术论坛,主题演讲<华为分析服务,助您打造数智化运营闭环方案>. 演讲嘉宾:华为消费者云服务 分析产品总监 ...

  4. Vector总结及部分底层源码分析

    Vector总结及部分底层源码分析 1. Vector继承的抽象类和实现的接口 Vector类实现的接口 List接口:里面定义了List集合的基本接口,Vector进行了实现 RandomAcces ...

  5. Mapreduce中的join操作

    一.背景 MapReduce提供了表连接操作其中包括Map端join.Reduce端join还有半连接,现在我们要讨论的是Map端join,Map端join是指数据到达map处理函数之前进行合并的,效 ...

  6. flink03-----1.Task的划分 2.共享资源槽 3.flink的容错

    1. Task的划分 在flink中,划分task的依据是发生shuffle(也叫redistrubute),或者是并行度发生变化 1.  wordcount为例 package cn._51doit ...

  7. nodeJs-process对象

    JavaScript 标准参考教程(alpha) 草稿二:Node.js process对象 GitHub TOP process对象 来自<JavaScript 标准参考教程(alpha)&g ...

  8. Shell学习(十)——du、df命令

    一.du 命令 1.命令格式: du [选项][文件] 2.命令功能: 显示每个文件和目录的磁盘使用空间. 3.命令参数: -a或-all 显示目录中个别文件的大小. -b或-bytes 显示目录或文 ...

  9. java多线程 并发编程

    一.多线程 1.操作系统有两个容易混淆的概念,进程和线程. 进程:一个计算机程序的运行实例,包含了需要执行的指令:有自己的独立地址空间,包含程序内容和数据:不同进程的地址空间是互相隔离的:进程拥有各种 ...

  10. vue2 中的 export import

    vue中组件的引用嵌套通过export import语法链接 Nodejs中的 export import P1.js export default { name: 'P1' } index.js i ...