C++STL隨手筆記(二)List容器的splice及std::partition用法
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::mt19937 EN; 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); } //建立一個空白的list std::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; }
相關推薦
C++STL隨手筆記(二)List容器的splice及std::partition用法
list容器內建splice這個函式,可以將容器依指定範圍切割, 以及std的partition可以對容器中的元素進行條件篩選並排續, 稱著記憶猶新趕快記錄下來用法。 #include <lis
C++ STL學習筆記四 list雙向連結串列容器
/* * ******************************************** * list雙向連結串列容器的基礎說明: ******************************************** * * list雙向連結串列容器採用雙向
C++|STL學習筆記-對STL中關聯容器map的進一步認識
關聯容器map key + value 的值 關聯容器 = 有序容器(紅黑樹) + 無序容器(散列表) + hash_map 有序容器中: map的鍵值是不允許重複的 multimap的鍵值是允許重複的 set是一個集合,鍵值=實值,就是隻包含一個值,既是鍵值也是實值,不允許重複 mul
c++ list 容器splice函式
list 的splice函式主要是用來合併兩個list。 splice是list中特有的拼接方法。splice實現了不需要拷貝的list合併,即可以在常數時間內從list的一個區域拼接到另一個list的一個區域。也就是說splice是一個常數時間的函式(但是也
c#第一篇筆記---關於list
reac lis ins eat for each range 刪除 index -> List<T> 線性集合,長度可變的數組 -> 增 Add() AddRange() Insert() 添加一個元素list.Add("張三");
C++STL簡陋筆記
ppp bob rdl baidu strings 層次 arc l2l tin PAT1132CutInteger(20) HDU6208TheDominatorofStrings(AC自動機) 從語言層次的角度看為什麽要精通C語言 glClearColor第四個參數有什
SGISTL原始碼閱讀十二 list容器中
SGISTL原始碼閱讀十二 list容器中 前言 在list容器上中我們介紹了list的資料結構,構造,空間分配等。接下來我們繼續分析list的一些相關操作。 深入原始碼 begin()/end //返回頭節點 iterator begin() { return (lin
C++|STL學習筆記-map的基本操作(插入,刪除,遍歷,大到小輸出)【仿大佬寫法】
首先的程式碼是插入,刪除,遍歷 執行截圖如下: 原始碼如下: #include <map> #include <iostream> #include <algorithm> using namespace std; typedef pair
C++ primer 讀書筆記 9.2 容器庫概覽
模板類 list<int> deque<double> 也可以定義容器的容器, vector<string> vector<vector<string>> 迭代器 迭代器範圍 [begin, end)
C++STL入門筆記
C++ STL中最基本以及最常用的類或容器無非就是以下幾個: string vector set list map 首先看看我們C語言一般怎麼使用字串的 char* s1 = "Hello SYSU!"; //建立指標指向字串常量,這段字串我們是不能修改
C++STL學習——stack與queue容器
stack容器 簡介 stack是一種堆疊容器,是一種"先進後出"的容器。 stack是簡單地裝飾deque容器而成為另外的一種容器 標頭檔案#include<stack> stack物件的預設構造 stack採用模板類實現, stack
C++|STL學習筆記-map的屬性(大小以及是否存在)
目錄 1.size()的用法 map的property map屬性 1.沒有容量; 2.得到元素的個數size() 這裡給出呼叫他size()的例子,原始碼如下: /*****
C++STL裡面7個常用容器的比較
1.STL容器分類: STL的容器可以分為以下幾個大類: 一 順序(序列)容器, 有vector, list, deque, string,stack( 介面卡類), queue( 介面卡類), priority queues( 介面卡類) 二 關聯容器, 有set, multiset,
STL學習筆記——序列式容器(一級容器)
序列式容器(線性結構,儲存了元素操作時的邏輯順序) array//C++內建 vector heap//以演算法形式呈現(***_heap) priority_queue list slist deque stack//介面卡 q
STL學習筆記——關聯式容器(二級容器)
1.RB-tree(二叉平衡搜尋樹,有自動排序功能)2.set 1)所有的元素都會根據元素的鍵值自動被排序(預設升序),set元素的鍵值就是實值,set不允許兩個元素有相同的鍵值; 2)set的迭代器為只讀迭代器,set不允許通過迭代器修改元素值,鍵值無法被修改; 3)由於set底層由
C/C++程式設計學習筆記二:C語言的函式中,如何使用指標交換兩個數的值,深入理解指標
使用外部函式交換兩個變數的值,一個再簡單不過的事情,但是在C/C++中,正確實現該功能反應了你對指標和引用等重要知識的掌握程度。本文列舉了幾種常見的寫法,其中前三種是錯誤的,後兩種是正確的。第四種使
c++ STL 學習筆記(map )
關於map 在STL的標頭檔案中<map>中定義了模版類map和multimap,用有序二叉樹表儲存型別為 pair<const Key, T>的元素對序列。序列中的元素以const Key部分作為標識,map中所有元素的Key 值必須是唯一的,multimap則
c++ STL 學習筆記(pair 和 set)
STL pair (1)pair 的定義 標頭檔案 <utility> STL的標頭檔案中描述了一個看上去非常簡單的模版類pair,用來表示一個二元組或元素對,並提供了按照字典序對元素對進行大小比較運算子模版函式。 定義一個pair物件表示一個平面座標點: 例:
《API Design for C++》讀書筆記(二):API特徵
目錄 本章所講的內容都是在回答下面這個問題:優質的API應該具有哪些基本特徵? 1、問題域建模 編寫API的目的是解決特定的問題或是完成具體的任務。因此,API應該首先為問題提供一個清晰的解決方案,同時能對實際的問題域進行準確的建模。
C++STL之multiset多重集合容器
中序 插入元素 stream 程序說明 紅黑樹 插入 數據 iostream 多重 multiset多重集合容器 multiset與set一樣, 也是使用紅黑樹來組織元素數據的, 唯一不同的是, multiset允許重復的元素鍵值插入, 而set則不允許. multis