c++11:std::partition分割,std::is_partitioned判断

序列

  vec.clear();for(int i =0;i<10;i++){vec.push_back(i);}

重新分割。大于1的排在后,返回第一个

std::vector<int>::iterator it = std::partition(vec.begin(),vec.end(),[](int value){return value>1;});
std::cout<<"partition:"<<*it<<std::endl;

输出

partition:1

排序后结果

 for(size_t i = 0;i<vec.size();i++){std::cout<<vec.at(i)<<" ";}

输出

9 8 2 3 4 5 6 7 1 0

除了小于1往后移动,其他原位置也已经和原来不一致

稳定排序

std::stable_partition

修改原序列,但是保持原排序

std::stable_partition(vec.begin(),vec.end(),[](int value){return value>1;});

输出

2 3 4 5 6 7 8 9 0 1

std::partition_copy

保持原序列,保持原排序,重新拷贝到两个新序列

{std::vector<int> vec{1,2,3,6,5,4,7,8,9,10};std::vector<int> vec1(10,1);std::vector<int> vec2(10,2);//返回 pair<_OIter1, _OIter2> 类型值auto result = std::partition_copy(vec.begin(),vec.end(),vec1.begin(),vec2.begin(),[](int n){return (0 == n%2);});//执向vec1的最后一个元素之后的值std::cout<< "vec1 first:"<<*result.first<<" size:"<<result.first-vec1.begin()<<std::endl;//执向vec2的最后一个元素之后的值std::cout<< "vec2 second:"<<*result.second<<" size:"<<result.second-vec2.begin()<<std::endl;for(auto it=vec1.begin();it!=result.first;it++){std::cout<<*it<<" ";}std::cout<<" "<<std::endl;for(auto it=vec2.begin();it!=result.second;it++){std::cout<<*it<<" ";}std::cout<<" "<<std::endl;}

结果

vec1 first:1 size:5
vec2 second:2 size:5
2 6 4 8 10
1 3 5 7 9

判断是否被分割排序过

  std::cout<<"is_partitioned:"<<std::is_partitioned(vec.begin(),vec.end(),[](int value){return value>1;});

输出

is_partitioned:1

注意std::is_partitioned用来判断整个序列是否被划分为两个部分,而不是只判断前一部分或后一部分是否满足条件。即用你给的第三个函数来判断

如果是分割过。可以直接找分割点

{std::vector<int> vec{2,4,6,8,1,3,5,7,9};std::vector<int>::iterator find = std::partition_point(vec.begin(),vec.end(),[](int n){return (0 == n%2);});for(auto it = vec.begin();it!=find;it++){std::cout<<*it<<" ";}std::cout<<" "<<std::endl;for(auto it = find;it!=vec.end();it++){std::cout<<*it<<" ";}std::cout<<" "<<std::endl;}

输出

2 4 6 8
1 3 5 7 9

扩展

std::partial_sort

std::partial_sort部分排序,即序列只对部分,比如1000万个数据排序出前面10个
例子
1.获取前4

 std::partial_sort(std::begin(vec),std::begin(vec)+4,std::end(vec));for(size_t i = 0;i<vec.size();i++){std::cout<<vec.at(i)<<" ";}std::cout<<" "<<std::endl;

自定义比较

std::partial_sort(std::begin(vec),std::begin(vec)+4,std::end(vec),[](int n1,int n2){return n1>n2;});for(size_t i = 0;i<vec.size();i++){std::cout<<vec.at(i)<<" ";}

结果

0 1 2 3 6 7 8 9 5 4
9 8 7 6 0 1 2 3 5 4

std::partial_sort_copy

排序到另一个容器中

    std::vector<int> vec1(5);std::partial_sort_copy(std::begin(vec),std::end(vec),std::begin(vec1),std::end(vec1));for(auto& it:vec1){std::cout<<it<<" ";}std::cout<<" "<<std::endl;

即vec按大小排序5个到新容器vec1中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/43656.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机 数进制转换;存储MB与带宽Mbps

参考&#xff1a;https://zhuanlan.zhihu.com/p/459817484 1、计算机 数进制转换 1&#xff09;与十进制相关的转换 2&#xff09;与二进制相关的转换 二进制是Binary&#xff0c;简写为B&#xff1b;八进制是Octal&#xff0c;简写为O&#xff1b;十进制是Decimal&#xff…

centos nginx配置ipv4和ipv6的地址都可以访问同一个网站

标题centos nginx配置ipv4和ipv6的地址都可以访问同一个网站 在 Nginx 中配置使 IPv4 和 IPv6 地址都可以访问同一个网站相对简单。只需要确保 Nginx 配置文件正确地配置了监听 IPv4 和 IPv6 地址的监听器即可。 打开你的 Nginx 配置文件&#xff0c;通常位于 /etc/nginx/nginx…

还在玩传统终端,不妨来试试全新 AI 终端 Warp

壹 ❀ 引 最近一段时间&#xff0c;AI领域如同雨后春笋般开始猛烈生长&#xff0c;processon&#xff0c;sentry&#xff0c;一些日常使用的工具都在积极接入AI&#xff0c;那么正好借着AI的风头&#xff0c;今天给大家推荐一款非常不错的智能终端 warp&#xff08;目前仅限ma…

车载APP软件外包开发通讯

车载APP与车辆之间的通信方式和特点会因为不同的技术和场景而有所不同。以下是一些常见的车载APP与车辆通信方式以及它们的特点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.蓝牙连接&#xff1a…

英语——基本句型

第一节 句型1——主语+谓语 一个句子为了说明一件事或表达一种感情,最简单的表达方式,就是“谁,怎么了”。这里的“谁”,就是句子的主语,它的内涵很丰富,可以是人、物、某种行为等。“怎么了”,就是句子的谓语,一般由不及物动词充当。主语+谓语,即构成一个最简单的句…

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片

今日学习0.96寸单色OLED显示屏的自由取模显示: 宋体汉字比较复杂&#xff0c;常用字符可以直接复制存下来&#xff0c;毕竟只有那么几十个字母字符&#xff0c;但汉字实在太多了&#xff0c;基本不会全部放在单片机里存着&#xff0c;一般用到多少个字就取几个字的模&#xff…

基于STM32+微信小程序设计的宠物投喂装置(腾讯云IOT)

一、设计需求 【1】 项目背景 社会经济的飞速发展与城市化进程的加速,城市市民家庭的封闭化和人口老龄化的情况日益突出,基于人们的情感寄托与休闲消费的需要,中国的宠物产业也悄然兴起。家庭宠物的饲养成为了城市居民生活消遣的新方式。宠物的喂养和看护往往是宠物主人最…

hive高频使用的拼接函数及“避坑”

hive高频使用的拼接函数及“避坑” 说到拼接函数应用场景和使用频次还是非常高&#xff0c;比如一个员工在公司充当多个角色&#xff0c;我们在底层存数的时候往往是多行&#xff0c;但是应用的时候我们通常会只需要一行&#xff0c;角色字段进行拼接&#xff0c;这样join其他…

typescript基础之null和undefined

TypeScript是一种基于JavaScript的编程语言&#xff0c;它支持静态类型检查和面向对象的特性。TypeScript中的null和undefined是两种基本类型&#xff0c;它们分别表示空值或未定义的值。在本文中&#xff0c;我将介绍TypeScript中null和undefined的含义、区别、检查方法和使用…

Transformer 相关模型的参数量计算

如何计算Transformer 相关模型的参数量呢&#xff1f; 先回忆一下Transformer模型论文《Attention is all your need》中的两个图。 设Transformer模型的层数为N&#xff0c;每个Transformer层主要由self-attention 和 Feed Forward组成。设self-attention模块的head个数为 …

linux系统部署jenkins详细教程

一、Linux环境 1、下载war包 官网下载地址&#xff1a; https://get.jenkins.io/war-stable/2.332.4/jenkins.war 2、将war包上传至服务器 创建目录/home/ubuntu/jenkins 上传war包至该目录 3、将jenkins添加到环境变量 进入环境变量文件 vim /etc/profile # 文件下方追加…

【3Ds Max】图形合并命令的简单使用

示例&#xff08;将文字设置在球体上&#xff09; 1. 首先这里创建一个球体和一个文本 2. 选中球体&#xff0c;在复合对象中点击图形合并按钮 点击“拾取图形”按钮&#xff0c;然后选中文本&#xff0c;此时可以看到球体上已经投射出文本 3. 接下来是一些常用参数的介绍 当…

从零实战SLAM-第八课(非特征点的视觉里程计)

在七月算法报的班&#xff0c;老师讲的蛮好。好记性不如烂笔头&#xff0c;关键内容还是记录一下吧&#xff0c;课程入口&#xff0c;感兴趣的同学可以学习一下。 --------------------------------------------------------------------------------------------------------…

centos下使用jemalloc解决Mysql内存泄漏问题

参考&#xff1a; MySQL bug&#xff1a;https://bugs.mysql.com/bug.php?id83047&tdsourcetags_pcqq_aiomsg https://github.com/jemalloc/jemalloc/blob/dev/INSTALL.md &#xff08;1&#xff09;ptmalloc 是glibc的内存分配管理 &#xff08;2&#xff09;tcmalloc…

【设计模式】模板方法模式(Template Method Pattern)

23种设计模式之模板方法模式&#xff08;Template Method Pattern&#xff09; 基本概念 模板方法模式是一种行为型设计模式&#xff0c;它定义了一个算法骨架&#xff0c;将某些算法步骤的实现延迟到子类中。 这样可以使得算法的框架不被修改&#xff0c;但是具体的实现可以…

Django

一 django 安装 1. **安装 Django&#xff1a;** 首先&#xff0c;确保您已经安装了 Python 和 pip&#xff08;Python 包管理器&#xff09;。然后&#xff0c;在命令行中运行以下命令来安装 Django&#xff1a; bashpip install Django 2. **创建项目&#xff1a;** …

Electron-builder打包和自动更新

前言 文本主要讲述如何为 electron 打包出来软件配置安装引导和结合 github 的 release 配置自动更新。 electron-builder 是将 Electron 工程打包成相应平台的软件的工具&#xff0c;我的工程是使用 electron-vite 构建的&#xff0c;其默认集成了 electron-builder &#x…

中大型无人机远程VHF语音电台系统方案

方案背景 中大型无人机在执行飞行任务时&#xff0c;特别是在管制空域飞行时地面航管人员需要通过语音与无人机通信。按《无人驾驶航空器飞行管理暂行条例》规定&#xff0c;中大型无人机应当进行适航管理。物流无人机和载人eVTOL都将进行适航管理&#xff0c;所以无人机也要有…

Unity 工具 之 Azure 微软SSML语音合成TTS流式获取音频数据的简单整理

Unity 工具 之 Azure 微软SSML语音合成TTS流式获取音频数据的简单整理 目录 Unity 工具 之 Azure 微软SSML语音合成TTS流式获取音频数据的简单整理 一、简单介绍 二、实现原理 三、实现步骤 四、关键代码 一、简单介绍 Unity 工具类&#xff0c;自己整理的一些游戏开发可…

Qt creator之对齐参考线——新增可视化缩进功能

Qt creator随着官方越来越重视&#xff0c;更新频率也在不断加快&#xff0c;今天无意中发现qt creator新版有了对齐参考线&#xff0c;也称可视化缩进Visualize Indent&#xff0c;默认为启用状态。 下图为旧版Qt Creator显示设置栏&#xff1a; 下图为新版本Qt Creator显示设…