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.pswp.cn/news/43656.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/43656.shtml
英文地址,請注明出處:http://en.pswp.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顯示設…