C++STL隨手筆記(二)List容器的splice及std::partition用法

来源:互联网 发布:淘宝背景图片素材大全 编辑:程序博客网 时间:2024/03/29 22:18

list容器內建splice這個函數,可以將容器依指定範圍切割,

以及std的partition可以對容器中的元素進行條件篩選並排續,

稱著記憶猶新趕快記錄下來用法。

#include <list>#include <iostream>#include <algorithm>#include <random>#include <string>using namespace std;class data{public:data(int n):m_data(n){};virtual ~data(){};int m_data;}//宣告要儲存的資料類;int main(int argc,char **argv){//隨機引擎std::random_device RD;auto seed=RD();std::mt19937EN;std::uniform_int_distribution<int> di(1,100);list<data> DataList;//初始化每個元素for(int i=1;i!=11;i++){data a(di(EN));DataList.push_back(a);}//創建一個空白的liststd::list<data> empty;//使用splice來將原有在datalist中的元素轉移過去//splice使用方式//list.splice(參數1,參數2,參數3,參數4);//參數一:位置//在新容器中x的元素插入的位置(迭代器)。////參數二:相同類型的列表對象(如本例當有相同元素data的list)(容器)。////參數三、參數四://原容器中被剪接下來的範圍(迭代器)empty.splice(empty.begin(),DataList,DataList.begin(),DataList.end());//將原有容器所有元素移到新容器,Datalist變為空//利用lambda函數來將新容器的值打印for_each(empty.begin(),empty.end(),[](const data d){cout<<d.m_data<<endl;});cout<< "par is"<<partition_val.m_data<<endl<<endl;//使用partition函數進行排列std::partition(empty.begin(),empty.end(),[&](data const& d){return d.m_data%2==1;//假如元素是基數則往前排列});cout<<string(50,'=')<<endl;//打印經過partition函數之後的值for(auto a:empty){cout<<a.m_data<<endl;}return 0;}


0 0
原创粉丝点击