freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c電子課件(下)第十一章-文庫吧資料

2024-10-23 00:26本頁面
  

【正文】 準(zhǔn)庫容器共有的函數(shù)( 2) 表 所有標(biāo)準(zhǔn)庫容器共有的函數(shù)( 3) 獲得指向被控序列開始處的迭代子,引用容器第一個元素 獲得指向被控序列末端的迭代子,引用容器最后一個元素的后繼位置 獲得指向被控序列末端的反轉(zhuǎn)型迭代子,引用容器最后一個元素。 【 例 】 優(yōu)先級隊列類演示,頭文件用queue,優(yōu)先級用數(shù)表示,數(shù)值越大優(yōu)先級越高。常用矢量為基礎(chǔ)容器。 優(yōu)先級隊列類 優(yōu)先級隊列( priority_queue)適配器: 用以實現(xiàn)優(yōu)先級隊列。 【 例 】 演示堆棧的壓入和彈出。 棧( stack)可用 vector或 deque為基礎(chǔ)。隊列( queue)默認(rèn)用 deque為基礎(chǔ),棧( stack)可用vector或 deque為基礎(chǔ)。 然后它可以象順序容器一樣使用。所謂適配器并不獨(dú)立,它依附在一個順序容器上。 【 例 】 我國部分省份與面積映射關(guān)聯(lián)容器類的演示 。 operator[const Keyamp。 映射和多重映射類 映射的使用: 映射和多重映射類 支持雙向迭代子 。 //構(gòu)造按默認(rèn)次序排列的映射, //元素值由區(qū)間 [first,last)指定的有序序列復(fù)制 map (first,last,pr)。 //構(gòu)造一個空的按默認(rèn)次序排列的映射 map (pr)。 映射和多重映射類 map類模板聲明: templatetypename Key,typename T,typename Pred = lessKey, typename A = allocatorpairconst Key,T class map。如用姓名排序,因姓名可能重復(fù),使用多重映射更為合適。 多重映射和映射關(guān)聯(lián)容器類用于快速存儲和讀取關(guān)鍵字與相關(guān)值(關(guān)鍵字 /數(shù)值對, key/value pair)。 【 例 】 整型多重集合關(guān)聯(lián)容器類 映射和多重映射類 映射和多重映射類引入: 它們提供了操作與關(guān)鍵字相關(guān)聯(lián)的映射值( mapped value)的方法。 multiset和 set通常實現(xiàn)為 紅黑二叉排序樹。 //同上,但按函數(shù)對象 pr排序 這些構(gòu)造函數(shù)還可以顯式給出分配子 (Allocator)對象。 //構(gòu)造一個空的按函數(shù)對象 pr排序的集合 set (first,last)。 //模板參數(shù)表中的非類型參數(shù)同樣可有默認(rèn)值 集合和多重集合類 set容器的構(gòu)造函數(shù): set ()。如對整型 multiset,只要用比較器函數(shù)對象lessint排序關(guān)鍵字,元素即可按升序排列。 多重集合允許重復(fù)的關(guān)鍵字( key),而集合不允許。集合與多重集合類的主要差別在于多重集合允許重復(fù)的關(guān)鍵字,而集合不允許重復(fù)的關(guān)鍵字。四個關(guān)聯(lián)容器為:集合( set),多重集合( multiset),映射( map)和多重映射( multimap)。 9. 算術(shù)算法 :該類算法有 4種,使用時要求包含頭文件 numeric。堆是以數(shù)組來表示二叉樹的一種形式。包括并( union),交( intersection),差( difference)和對稱差( symmetric difference)。 6.關(guān)系算法 :有 7種關(guān)系算法,為比較兩個容器提供了各種策略,包括相等( equal()),最大( max()),最?。?min())等等。如:三個字符 {a, b, c}組成的序列有 6種可能的全排列: abc, acb,bac, bca, cab, cba;并且六種全排列按以上順序排列,認(rèn)為 abc最小, cba最大,因為 abc是全順序(從小到大)而 cba是全逆序(從大到?。?。 4.排列組合算法 :有 2種算法。所謂整序 , 是按一定規(guī)律分類 , 如分割 ( partition) 算法把容器分為兩組 , 一組由滿足某條件的元素組成 , 另一組由不滿足某條件的元素組成 。 equal_range() 、 lower_bound() 和upper_bound()提供對半查找形式 。但不能用OutputInterator。 如 find()最低要求為: InputIterator,可以傳遞更高級別的迭代子。 即: [first,last) 當(dāng) first==last成立 , 則范圍為空 。 泛型算法 泛型算法的構(gòu)造與使用方法 : 所有泛型算法的前兩個實參是一對 iterator, 通常稱為 first和last, 它們標(biāo)出要操作的容器或內(nèi)置數(shù)組中的元素范圍 。 reverser算法顛倒范圍中元素的排列順序,而 reverse_copy算法同時把結(jié)果復(fù)制到目標(biāo)范圍中。如 find_if算法表示查找一些值滿足函數(shù)指定條件的元素,而 find查找特定的值。 *在泛型算法中有一種習(xí)慣用語,不說滿足某條件的元素,而講滿足指定二進(jìn)制 謂詞 規(guī)則的元素,因為謂詞是返回布爾值的函數(shù)對象,滿足則返回 true,即與滿足指定條件是同樣意思。格式同綁定器。 C++標(biāo)準(zhǔn)庫也提供了兩種 negator適配器: not1和 not2。 函數(shù)適配器特化或擴(kuò)展一元或二元函數(shù)對象: 綁定器( Binder): 把二元函數(shù)對象中的一個參數(shù)固定(綁定),使之轉(zhuǎn)為一元函數(shù), C++標(biāo)準(zhǔn)庫提供兩種預(yù)定義的 binder適配器: bind1st和 bind2nd,分別綁定了第一或第二個參數(shù)。amp。 函數(shù)對象的優(yōu)點: 函數(shù)對象 預(yù)定義函數(shù)對象及其使用方法: 使用時要包含頭文件: includefunctional 算術(shù)函數(shù)對象: 加法: plusType(x,y) //返回 x+y,可用于 string、復(fù)數(shù)和浮點數(shù)等 減法: minusType(x,y) //返回 xy,不能用串 ,可用于復(fù)數(shù)和浮點數(shù)等 乘法: multipliesType(x,y) //返回 x*y,不能用串 ,可用于復(fù)數(shù)和浮點數(shù)等 除法: dividesType(x,y) //返回 x/y,不能用串 ,可用于復(fù)數(shù)和浮點數(shù)等 求余: modulusType(x,y) //返回 x%y,只能用于整數(shù) 取反: negateType(x) //返回 x,補(bǔ)碼 ,只能用于整數(shù) 函數(shù)對象 邏輯函數(shù)對象: 這里 Type必須支持邏輯運(yùn)算,有兩個參數(shù)。 使用函數(shù)對象實現(xiàn)泛型算法: 函數(shù)對象 函數(shù)對象與函數(shù)指針相比較有 三個優(yōu)點 :第一,函數(shù)指針是間接引用,不能作為內(nèi)聯(lián)函數(shù),而函數(shù)對象可以,這樣速度更快;第二,函數(shù)對象可以擁有任意數(shù)量的額外數(shù)據(jù),用這些數(shù)據(jù)可以用來緩沖當(dāng)前數(shù)據(jù)和結(jié)果,提高運(yùn)行質(zhì)量,當(dāng)然多數(shù)情況下不一定使用,上例中 res就是一個額外數(shù)據(jù);第三,編譯時對函數(shù)對象作類型檢查。 return p[minIndex]。isize。 min(const Type*p,int size,Comp p){ int minIndex=0。 Int類可以作為類型參數(shù)傳遞給函數(shù)對象 greaterT(),同時把重載的運(yùn)算符也傳遞過去了。} //邏輯非符號重載 private: int _val。} //求余符號重載 bool operator(int ival){return _valival。 函數(shù)對象 例如,自定義整數(shù)類 Int,其中重載了比較算法“ ”運(yùn)算符: class Int{ public: Int(int ival=0):_val(ival){} int operator(){return _val。 greaterType中所包含的比較算法實際上在內(nèi)置類型 int,字符串類 string中定義。如果是字符串,則有: sort((),(),greaterstring())。 函數(shù)對象的應(yīng)用: 函數(shù)對象主要是作為泛型算法的 實參 使用,通常用來改變默認(rèn)的操作,如: sort((),(),greaterint())。 函數(shù)對象 【 例 】 求和函數(shù)對象的定義和測試。 和“引用”一樣,“函數(shù)對象”很少獨(dú)立使用。該操作符封裝了應(yīng)該被實現(xiàn)為一個函數(shù)的操作。 在 STL的泛型算法中采用“函數(shù)對象”( Function Object)來解決該問題。本節(jié)進(jìn)一步討論 算法的通用性 。使用者可以用很多方式來 特化每一個模板函數(shù) ,大大提高了它作為通用型程序組件的適用性。 //在迭代子 it指定元素前插入由區(qū)間 [first,last)指定的序列 泛型算法與函數(shù)對象 算法表現(xiàn)為一系列的函數(shù)模板。 //在迭代子 it指定元素前插入一個值為 x的元素,返回指向新元素的迭代子 insert (it,n,x)。本例演示該函數(shù)的使用,最后輸出字符串:“ STL功能強(qiáng)使用方便。 雙端隊列類容器也有多種構(gòu)造函數(shù),與矢量類或列表類形式相同。它以順序表為基礎(chǔ),所以能利用下標(biāo)提供有效的索引訪問,它支持隨機(jī)訪問迭代子。不能使用泛型算法 sort()對無序的列表類對象排序,因為 sort()要求隨機(jī)迭代子 , list僅支持雙向迭代子 。 在本例中建立了兩個已排序好的列表類對象,然后歸并。 列表類容器也有多種構(gòu)造函數(shù),與矢量類形式相同 。列表類不能使用下標(biāo)運(yùn)算符 []。 列表類 列表類( list)的引入: 是由雙向鏈表組成的。) //實參同樣可以是公有派生子類型對象 ostream_iteratorType迭代子標(biāo)識符 (ostreamamp。)。 矢量類 流迭代子 (Stream Iterator): 包括輸入流迭代子( Istream_Iterator)和輸出流迭代子( Ostream_Iterator) 輸入流迭代子類支持在 istream、 ifstream等輸入流類上的迭代子操作。返回一個 front_inserter迭代子。) 它使用容器的 push_front()插入操作代替賦值操作符,將新元素添加到容器的前端,同樣,新添加的元素以逆序方式結(jié)束于被控序列前端 ,即最后添加的元素放在最前面。返回一個 back_inserter迭代子。) 它使用容器的 push_back()插入操作代替賦值操作符,將新元素添加到容器對象的末端。標(biāo)記起始插入位置的迭代子并不是保持不變,而是隨每個被插入的元素而遞增,這樣每個元素就能順序被插入。,Iter)
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1