內容文稿acm工具-stl_第1頁
內容文稿acm工具-stl_第2頁
內容文稿acm工具-stl_第3頁
內容文稿acm工具-stl_第4頁
內容文稿acm工具-stl_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、STL介1STL介1、STL 簡2、算3、容4、迭代5、使用注一、stack 堆成員函數實例程序二、queue 隊成員函數實例程序三、PriorityQueues 優(yōu)先隊成員函數實例程序四、Bitset位集成員函數實例程序五、list 列成員函數實例程序六、vector向成員函數實例程序七、map與多map成員函數MultiMap實例程序八、set/multiset 集合與多重集成員函數Set實例程序MultiSet實例程序九、deque(DoubleEndedQueue) 雙端隊成員函數實例程序十、string 字符成員函數實例程序十一、常用算法調min_element/copy/copy_

2、n fill/ remove/ remove/ partition/ sort/lower_bound/upper_bound/要求區(qū)間有binary_search/要求有序區(qū)merge/set_union,ersection,set_difference,ion / heapmin/ max / STL介1、STL簡STL(Standardibrary,標準模板庫)開發(fā)的一系AlexanderStepanov、MengLeeDavidRMusserSTL介1、STL簡STL(Standardibrary,標準模板庫)開發(fā)的一系AlexanderStepanov、MengLeeDavidRMu

3、sserSTL 的代碼從廣義上講分為三類:algorithm(算法container(容器和 成的庫來說提供了更好的代碼重用機會。在 C+標準中,STL 被組織為下面的 13 個頭文件、STL各個部分的主要特點。2、算C+使用模板或者說對模板進行特化的時候,STL在一個有效的框架中完成這些算法的模版的參數中使用一種類型替換掉同一種類中的其他類型。STL 提供了大約 100 個實現算法的模版函數,比如算法 for_each 將為指定序列中的每一個元素調用指定的函數,stable_sort 以你所指定的規(guī)則對序列進行穩(wěn)定性排序等等。熟悉了 STL 之后,許多代碼可以被大大的化簡,只需要通過調用一兩

4、個算組成STL頭文件中最大的一個(盡管它很好理解、修改、移除、反轉、排序、合并等等。體積很小,只包幾個在序列上面進行簡單數算的模板函數,包括加法和乘法在序列上的一些操作。中則定義了一些模板類,用3、容代碼,這些代碼都十分相似,只是為了適應不同數據的變化而在細節(jié)上有所出入。STL 容器為通過設置一些模板類,STL 容器對最常用的數據結構提供了支持,這些模板的參數允指容器部分主要由頭文件, ,可以4的迭代器從作用上來說是最基本的部分理解起來比前兩者都要費力化,這種簡化在 STL 中就是用迭代器來完成的。概括來說,迭代器在 STL 中用來將4的迭代器從作用上來說是最基本的部分理解起來比前兩者都要費力

5、化,這種簡化在 STL 中就是用迭代器來完成的。概括來說,迭代器在 STL 中用來將算法和容器聯系起來,起著一種黏和劑的作用。幾乎 STL 提供的所有算法都是通過迭代器存取元素序列進迭代器部分主要由頭文件,和組成。是個很小的頭文件,它包括了貫穿使用在 STL 中的幾個模板,中提供了迭器使用的許多方法,而對于的描述則十分空間同時也為某些算法執(zhí)行期間產生的臨時對象提供機制,中的主部分是模板類 allocator,它負責產生所有容器中的默認分配器5STLstart,end)startend之前一向量連的元列表雙隊列連的指向不同元素的指針所組成的數集合由節(jié)點組成的 樹,每個節(jié)點都包含著一個元棧隊列一、

6、stack 頭文件: stack類型容器usingcout Top: s.top() endl; coutSize:一、stack 頭文件: stack類型容器usingcout Top: s.top() endl; coutSize:s.size()endl; cout Size: s.size() endl; if(s.empty()coutIsemptyendl;else coutIsnotemptyreturnbooltruevoidvoidpush(constTYPE&valvalsize_typeTYPE二、queue 頭文件: queue類型容器實例程序usingSize: s.

7、size() endl; Front:s.front()endl; Back: s.back() endl;二、queue 頭文件: queue類型容器實例程序usingSize: s.size() endl; Front:s.front()endl; Back: s.back() endl;Size: s.size() endl; Front:s.front()endl;Back:s.back()if(s.empty() coutIsemptyendl; else cout Is not empty endl;returnbooltruevoidvoidpush(constTYPE&valv

8、alsize_typeTYPE返回一,指向隊列的最后一個元素TYPE返回隊列第一個元素三、PriorityQueues 頭文件: priority_queue類型容器比較謂詞容器和比較謂詞;如果使用自定義的 struct/class, 則需要重載小于號運算符。舉 3 例/三、PriorityQueues 頭文件: priority_queuepriority_queuefloat,vector,greaterstructbooloperator(constnode&a)constreturn(ipriority_queue以上三個優(yōu)先隊列出隊的元素分別是最小的整數、最大的浮點數、成員 i 最小

9、的nodeusing2(a)#definedist2(x,y)struct2(x)x,constbooloperator(constcoordreturn(dist2(x,y)dist2(b.x,struct constbooloperator()(constcoord&a,constcoordreturn(dist2(a.x,a.y)dist2(b.x,booltruevoidvoidpush(constTYPE&val添加一個元素到優(yōu)先隊列中,值為 valsize_typeTYPE&top 返回一,指向最高優(yōu)先級的元素priority_queuecoorda.x=3,a.y a.x=1,a

10、.y priority_queuecoorda.x=3,a.y a.x=1,a.y a.x=2,=cout,s.top().ycoutTop:s.top().x coutSize:coutTop:,s.top().yif(s.empty()coutIsemptyreturncoutIsnotempty、Bitset實例化: bitsetbs; /bits位,不設置初值、Bitset實例化: bitsetbs; /bits位,不設置初值(全零) bitsetbs(unsignedlong&value);unsignedlong初始化/string來初始bitset:operatorboolbit

11、set:operator(size_tidx)第一種形式返回的是對在 idx 位置的那個位第二種類型返回的是 bool 類型,輸出前需要進行強制類型轉換istream&operator(istream&strm,bitset&盡可能多地讀入包含0,1的字符串,如果長度小于bitset的長度, 使用前導0填#include #include usingbitsetbs=構造函數bitset(unsignedlongval以無參的形式創(chuàng)建 bitset,或把一個長無符號整數轉為二進制 到 bitset中。模板bitset有多長。!=,=,&=,=,|=,=,(和普通位運算一樣),取某一位(像數組b

12、ool如果有位被置1返回true,否則返回size_type返回被設置成 1的位的個數bitsetbitset&flip(反轉bitset中所有的反上的位是unsignedbool如果沒有位被置1返回true,否則bitsetbitset&reset(置零bitset中所有的置上的位是unsignedbitsetbitset1bitset置上的位是unsigned booltest(如果指定位為1返回true,否則string轉換成string返回以便輸出,可直接unsigned long unsignedlong返回四coutbs bs = 63; cout=coutbs bs = 63;

13、cout=bs1Bits:bs.count()coutbs32 coutbs32return五、list 頭文件list類型構造函數(使得可以在定義時賦初值listlist(size_typen,constTYPE&v) list (const list &from)input_iterator給出n個五、list 頭文件list類型構造函數(使得可以在定義時賦初值listlist(size_typen,constTYPE&v) list (const list &from)input_iterator給出n個初由另一個list初始由start,end)void assign(input_it

14、erator start, input_iterator end);void assign(size_type num, TYPE區(qū)間start,end)的內容到list中清空鏈表num個值為val的元TYPETYPEiteratoriteratorvoidbooltrueiteratoriteratorerase(iteratorstart, iterator end);刪所指元素并返回下一元素迭代刪除start, end)之間的元素,并返回iteratorinsert(,一個值為value的元素constTYPE&valvoid insert( iteratorsize_typenum,c

15、onstTYPE&val); void insert( iteratorinput_iterator start, input_iterator end );返回其迭代器及以后的元素后移num個值為 value的元素在start, end)之間的元素到voidmerge(list&lstvoidmerge(list&lst,bool/boolCmpfunc(Type&a,Type用小于號進行比較 可指定比較函數 Cmpfunc, TYPE類型元素進行比較voidvoidvoidpush_back(constTYPE&val將 val連接到鏈表的最后voidpush_front(constTYP

16、E&val將 val連接到鏈表的頭部voidremove(constTYPE&val刪除鏈表中所有值為 val的元素voidremove_if(bool/booltestfunc(TYPE如果testfunc返回true則刪除該元素#include #include usingfor:iteratori=0;i2;coutSize:lis.size()endl; for(li=#include #include usingfor:iteratori=0;i2;coutSize:lis.size()endl; for(li=lis.begin();li!=cout*liendl; coutSiz

17、e:lis.size()endl; for(li=lis.begin();li!=cout*liendl; coutSize:lis.size()endl; for(li=lis.begin();li!=cout*lireturnsize_type返回list中元素的數量voidresize(size_typen, TYPE val = 0)n,nsize()只保留前面n個元素,否則最后size() n個value(0)voidvoidvoidsort(Compvoidsplice(,lst&lstvoid splice( iterator,list &lst, iterator del );

18、void,&lst,iteratorstart,iterator及其后元素后移將lst鏈表中del所指元素將lst鏈表中start,end)之間的元素voidswap(list&lstvoid去除鏈表中重復元素(離散化)reverse_iteratorreverse_iterator六、vector#include vector類型構造函數(使得可以在定義時賦初值vector(size_typen,constTYPE&v) vector(const vector &from)vector ( input_iterator input_iterator六、vector#include vecto

19、r類型構造函數(使得可以在定義時賦初值vector(size_typen,constTYPE&v) vector(const vector &from)vector ( input_iterator input_iterator給出n個初由另一個vector初始由start,end)運算符,包括運算符使 vector 可以像數組一樣操void assign(input_iterator start, input_iterator end);void assign(size_type num, TYPE清空 區(qū)間start, 的內容到list清空vector,TYPEat(size_type返回

20、在 loc位置元素的值,有左TYPETYPEiteratoriterator返回指向vector末尾(最后一個元void清空 vector(未回收空間booltrueiteratorerase(iteratoriteratorerase(iteratorstart, iterator end);刪除 loc 所指元素并返回下一元素迭代刪除start, end)之間的元素,并返回iteratorinsert(iteratorconstTYPE&valvoid insert( iterator loc, size_typenum,constTYPE&val); void insert( itera

21、tor loc, input_iterator start, input_iterator end );valueloc位置并loc及以后元素后移。start,end)loc位loc及以后元素后移void刪除 vector的最后一個元素voidpush_back(constTYPE&valval放置到vector的最后voidreserve(size_type預留至少共容納 size 個元素的空size_type返回list中元素的數量voidresize(size_typen, TYPE val = 0)value(0)voidswap(vector&fromreverse_iterator

22、reverse_iterator對vector進行排序可以使用STL的sort,stable_sort,partition,partial_sort, nth_element, STLunique算法對其進行排重,但是一定要這么寫:vt.erase(unique(vt.begin(),vt.end(),使用STL的removeremove_if對vector進行排序可以使用STL的sort,stable_sort,partition,partial_sort, nth_element, STLunique算法對其進行排重,但是一定要這么寫:vt.erase(unique(vt.begin(),

23、vt.end(),使用STL的removeremove_if算法刪除指定元素vt.erase(remove(vt.begin(),vt.end(),Type&value),vt.erase(remove_if(vt.begin(),vt.end(),testfunc),回收vector占用的空間vector(vt).swap(vt); /回收 vt中多余元素占用的空vector().swap(vt); /回收vt占用的所有空的空的vector類型變量(前一句還執(zhí)行了用vt 對其初始化并與 vt 交換,然后這個變量在這條語句結束時被自。實例程序usingfori=0;i5;a.push_back

24、(5-coutSize: a0=coutSize:a.size()a.size()a.size();fori=0;icoutai,endl; cout endl;sort(a.begin(),coutSize:a.size()fori=0;i)a.size();coutai,endl; cout endl;coutSize:a.size()endl; return 0;七、map樹實現的關聯式容器,包含“關鍵字/到相應位置??梢灾付ū容^謂詞(使用 std 中的 less/greater 或仿函數)頭文件: 七、map樹實現的關聯式容器,包含“關鍵字/到相應位置??梢灾付ū容^謂詞(使用 std

25、中的 less/greater 或仿函數)頭文件: #includetdtemplate class Key, class T, class Compare = less, classAllocator=allocatorpairclasstemplate class Key, class T, class Compare = less, classAllocator=allocatorpairclasstemplateclassT1,classstruct;T2/other由于pair是個結構體map/multimap里面存放的是pair, 所以對于這兩個容element.second的,p

26、air(key,value)make_pair(key,value)keyvalue的類型,比make_pair(1, 0)make_pair(1, 0.0)的。實例化(map)mapkey類型value類型實例化(multimap)multimap/注意v下面的空格謂詞(std 中的 less/greater 或者自定義的仿函數果使用自定義的 struct/class,3例:,/注意v下面的空格structnode,greaterbooloperator(constnode&a)constreturn(i以上三個 map/multimap 的元素分別按照整數升序、浮點降序、node.i 升序

27、排列的置)的迭代voidbooltrueinsert(pair &val );(上面的insertmultimap無返回值iterator insert( iterator loc, pair &val ); voidinsert(input_iteratorstart,input_iteratorend一個pair類型的元素, map返回pair,其 是指向 元素的迭代器,second表示是否 成功loc開始尋找一個可以 的元素的位置將其 start,end)voiderase(iteratorsize_typeerase(const刪除loc所指元刪除start,end)pairitera

28、tor start, iterator equal_range(constkey_type查找鍵值等于 key的元素區(qū)間為start, end)pair返回iterator find(const key_type end()size_typecount(constKeyType返回鍵值等于 key的元素的個iteratorlower_bound(key_type&keykey的第一iteratorupper_bound(key_type&keykey的第一個size_typevoidswap(map&from交換兩個map中的元返回一個比較 key的函數parevalue返回一個比較 valu

29、e的函數reverse_iteratorreverse_iteratorMap實例程序usingstructbooloperator(constT1return(vconstboolT2&a,constT2Map實例程序usingstructbooloperator(constT1return(vconstboolT2&a,constT2return(a.vmt1;foruser-definedleforuser-defined,cmpmt2; m2i,p1,m2abd=2;,greater,greater:iteratorm2i,p1,p2; m2abc = 1;m2cba = 2;m2.i

30、nsert(make_pair(aaa, m2abf=m2abe=coutm2abcm2i=if(m2i!=m2.end() cout :secondcoutfindnothingcoutIteratefor(m2i=m2.begin();m2i!=m2.end();coutm2i-return:second:iteratormm1i,p1,MultiMap 實例程序using:iteratormm1i,p1,coutSize:mm1.size()for(mm1i=mm1.begin();mm1i!=mm1.end();coutmm1i-:secondp1p2COUNT:mm1.count(b

31、)Bound:for(mm1i=p1;mm1i!=p2;coutmm1i-:secondreturn八、setmultiset 頭文件實例化(set)set類型實例化(multiset)multiset類型構造函數(使得可以在定義時賦初值set(constsetinput_iterator end)對八、setmultiset 頭文件實例化(set)set類型實例化(multiset)multiset類型構造函數(使得可以在定義時賦初值set(constsetinput_iterator end)對應 multiset也有這三個構造函由另一個set初始由start,end)運算符包括itera

32、toriteratorvoidbooltrueiteratorinsert(TYPE&val(insertmultiset無返回值) iteratorinsert(iteratorloc,TYPE voidinsert(input_iteratorinput_iteratorend一個元素set分別元素的迭代器和是成從loc開始尋找一個可值為的元素的位置將并返回其迭代start,end)voiderase(iteratorsize_typeerase(const刪除loc所指元刪除start,end)pairiterator start, iterator equal_range(constk

33、ey_typemultisetkey的所有元返回指示范圍的兩個迭代器以 pair size_typecount(constKeyType查找容器中值為 key的元素的個iterator find(const key_type end()iteratorlower_bound(key_type&keykey的第一iteratorupper_bound(key_type&keykey的第一個size_typevoidswap(vector&from返回一個比較 key的函數parevalue返回一個比較 value的函數Setusingstructkey,value1,booloperator(c

34、onstT1return(keySetusingstructkey,value1,booloperator(constT1return(keykey,v1,v2; booloperator()(constT2&a,constT2return(a.keysets2; #if 1setset:iteratoriter1;setstring,greatersetstring,greater:iteratoriter1; coutITERATE:for(iter1=s1.begin();iter1!=s1.end();iter1+) cout (*iter1) endl;coutFIND:endl;

35、iter1 = s1.find(abc);if(iter1!=s1.end() cout*iter1returncoutNOTFOUNDreverse_iteratorreverse_iteratorMultiSet 實例程序usingstructkey,value1,booloperator(constT1return(keyMultiSet 實例程序usingstructkey,value1,booloperator(constT1return(keykey,v1,v2; booloperator()(constT2&a,constT2return(a.keymultisets2;mult

36、isets3; #if 1multiset:iteratoriter1;greatergreater:iteratorcoutfor(iter1=s1.begin();iter1!=s1.end();cout(*iter1)coutFIND:iter1=if(iter1!=cout*iter1coutNOTFOUNDcoutCOUNT:s1.count(abc)endl; cout BOUND: endl;multiset:iterators1i,p1,p1=p2=for(s1i=p1;s1i!=p2;s1i+) cout (*s1i) endl;return九、deque(DoubleEnd

37、edQueue) deque 和vector 很相似但是它允許在容器頭部快和刪(就像在尾部一樣并提供對元素隨的能九、deque(DoubleEndedQueue) deque 和vector 很相似但是它允許在容器頭部快和刪(就像在尾部一樣并提供對元素隨的能力(但速度稍慢于vector頭文件: dequei=0;i5;a.push_back(5-coutSize:a.size()coutSize:a.size()a.size();fori=0;icoutai,coutsort(a.begin(),coutSize:a.size()fori=0;i)a.size();coutai,coutcou

38、tSize:a.size()endl; return 0;TYPEval=nsize()個元素置為 value(如果不給出,默認為 voidswap(vector&fromreverse_iteratorreverse_iterator十、string 頭文件:#includeiostream就可以用了實例化:string StringName;string( const string& s ); string(size_type length, 十、string 頭文件:#includeiostream就可以用了實例化:string StringName;string( const stri

39、ng& s ); string(size_type length, const char& ch)string( const char* str ); length );string( const string& str, size_type index, size_type length );string( input_iterator start, input_iterator end );使用一個 string來初始使用length個字符ch來初始使用一個字符數組初始化(ASCII0 結束用一個stringindex開始的最length 個字符初始用start,end)=,=,!=,+,

40、+=,=,可以像字符數組一樣隨和寫string&append(conststring& str );string&append(constchar*str); size_typeindex,size_typelen); string& append( const char* str, size_type num );ch );string&append(input_iterator start, input_iterator end );追加一個stringindex開始的最len個字追加一個字符數組最多 num 個字追加num個字符追加start,end)voidassign(size_ty

41、penum,const char& val );input_iterator end );string&assign(conststring& str );string&assign(constchar*str); string& assign( const char* str, size_type num );string&assign( const string& 賦值,num個字符賦值,start,end)賦值,stringstr賦值,用字符數組最多 num 個字賦值string index開始的最size_typeindex,size_typelenlen個字TYPE&at(size_

42、typeloc返回在指定位置 locsize_typeindex,size_typelenlen個字TYPE&at(size_typeloc返回在指定位置 loc的字符或寫const_iteratorbegin()constchar*返回一個標準c字符串,但是不允許修改,否則會破壞string的size_typecapacity()void清空 string,但是不回收空compare(stringa,string比較兩個字符串,ab返回正數size_type copy( char* str, size_type num, size_type index = 0 ); /注意!調用這個函數的時

43、候會自動調memset(str,NULL,stringindex(0)開始的最多num個字符copy到字符數組str中,copy的字符數。不建議使用。constchar返回指向第一個字符的指針(不要修改boolempty()返回true如果字符串長為const_iteratorend()iteratorerase(iteratorloc); iteratorerase(iteratorstart, iterator end );string&erase(size_typeindex=0, size_type num = n );刪除loc位置的字刪除start,end)之間的字刪除從index

44、開始的num個字符,返size_type index );size_typefind(constchar*str, size_type index );size_typefind(constchar*str, size_type index, size_type length );index );置,找不到就返回(常量置,找不到就返回(常量string:nistream& getline( istream& is, string&s,charistream& getline( istream& is, string&s,chardelimiter=n從輸入流is中讀入一些字符到strdelim

45、iter(默認為n)結char& ch );string&insert(size_typeindex, const string& str );string&insert(size_typeindex, const char* str );string&insert(size_typeindex1, const string& str, size_type index2, size_type num );string& insert( size_type index, constchar*str,size_typenum); string& insert( size_type index, s

46、ize_type num, char ch );num, const char& ch );voidinsert(iteratori,iterator start, iterator end );在迭代器i指向的位一個字符在位置一個在位置一個C字符在index1位string從開始的最多num個字在index位C字符串的最多在index位num個字符在迭代器i指向的位num個字在迭代器i指向的位置size_type返回 string 的長度(和size()一樣size_typevoidpush_back(char字符cstring的末reverse_iteratorreverse_iterat

47、orstring&replace(size_typeindex, string&replace(size_typeindex, size_typenum,constchar*str); string&replace(size_typeindex, size_type num1, const char* str, size_type num2 );替換(index開始最多num個字符)(string為(string strindex2開始的最多 num2個字符)為(C字符串str)替換(index開始最多num1個字符)為(C字符串str中的num2個字符,有可str占用的空間string(st

48、r).swap(str);保留現有有效元素 string ().swap(str); /刪除所有元素str.erase(unique(str.begin(),str.end(),f(“%s”,string 的忽略大小寫str占用的空間string(str).swap(str);保留現有有效元素 string ().swap(str); /刪除所有元素str.erase(unique(str.begin(),str.end(),f(“%s”,string 的忽略大小寫排序仿函數structbooloperator()(conststring&a,conststringi=0;ia.size()&

49、ib.size();if(toupper(ai)toupper(bi)returnfalse;returna.size()string&replace(size_typeindex, size_type num1, size_type num2, char ch );string& replace( iterator start, iteratorend,conststring&str); string& replace( iterator start, iterator end, const char* str ); string& replace( iterator start, iter

50、ator end, const char* str, size_type num );string& replace( iterator start, iteratorend,size_typenum,char ch );為(num2ch)替換(本串中start,nd)之間字符)為 (string str)替換(本串中start,end)之間字符)(C字符串替換(本串中start,end)之間字符)(c字符串str中最多num個字符,會越界替換(本串中start,end)之間字符)num個字符voidreserve(size_typesize為string開辟至少能寸下size個字符的TYPE

51、& val = TYPE() );stringsize sizesize()val格式同 find,逆向查size_typestring substr( size_type index, size_type length = nstringlength就到結尾voidswap(stringstr交換內setignoreCaseStringSet; mapignoreCaseStringMap;實例程序usingstringt1,t1t1:setignoreCaseStringSet; mapignoreCaseStringMap;實例程序usingstringt1,t1t1:t1,t2:t2t

52、20=t20t1+=coutt1=if(t1=t1=t2coutt1!=t2%sn,f(t1unsigned=if(idx) coutfindindexidxcoutnotfoundstring=t3.replace(1,2,coutt3:t3,size=t3.size()a(num,for_each(a.begin(),a.end(),neg);/a中元素變?yōu)槠湎喾醋⒁猓喝绻枰獙υ剡M行改動,定義的函數和仿函數中需要使傳參2.min_element/end,Cmpfuncfunc); end,Cmpfunc返回區(qū)間being, end)之間的最小/最大元素,可以提供比較函數/仿函數(二元)

53、,返回3.copy /copy_n iteratorcopy(iteratorbegin,iteratorend,iteratorto); iterator copy_n(iterator begin, size_t n, iterator to);copy把begin, end)之間的元素拷貝到從 to 開始的一段區(qū)間,拷貝完畢后返回目標間的結尾(最后一個拷貝位置的下一個位置)copy_n 把從 begin 開始的 n 個元素拷貝到從to 開始的位置返回目標區(qū)間的結尾(同copy)iterator 和可以是普通的iterator或者reverse_iterator, 也可以是數組的指針。例a

54、3=1,2,3,copy(a,a+3,copy_n(a,3,/把區(qū)間a, a+3)的元素拷貝到從b開始的等長區(qū)/把從a開始的3個元素拷貝到從b開始的等長區(qū)4. fill / void,iteratorlast,constT&將end)之間的元素賦值為iterator,Sizen,constT&將例fill(a, a+10, 0); /0填充區(qū)間a, a+10) fill(a,10,0);將end)之間的元素賦值為iterator,Sizen,constT&將例fill(a, a+10, 0); /0填充區(qū)間a, a+10) fill(a,10,0);0填充從a開始的10個元素實例程序#incl

55、udeusingfill(a,a+10,fori=0;if(%d,fill_n(a,10,fori=if(%d,stringfill(b,b+ifori=f(%sn,return5.remove/iterator remove(iterator begin, iterator end, const T &value) iteratorremove_if(iteratorbegin,iteratorend,functiontest)按區(qū)間中原有元素的相對次序將不需要移除的元素提前,覆蓋需要被刪除的元素(指定或是(一元判斷函數 test)返回 true的值),返回新的結尾。它不刪除新的結尾和舊的結

56、尾之間的元素,所以一般是結合erase使用:例for( i=0; i10; i+) vt.push_back(i); vt.erase(remove(vt.begin(),vt.end(),3),vt.end();實例程序#include#includeusingboolreturn(i*e=remove(a,a+5,coutforEND:(e-a)i=0;iusingboolreturn(i*e=remove(a,a+5,coutforEND:(e-a)i=0;i Left:*s=a;s5;coutaie;s+)cout*sd10=e=remove_if(d,d+10,coutforEND:

57、(e-d)i=0;i Left:*s=d;s10;coutdie;s+)cout*s:iteratorb+7,vi=remove(v.begin(),v.end(),/v.erase(remove(v.begin(),v.end(),1),v.end(); cout Size: v.size() endl;fori=0;i)v.size();+i) coutreturn6. iteratorunique(iteratorbegin,iteratorend,Cmpfunc如果區(qū)間是將(二元比較函數cmp)傳給sort函數排序的,那么需要將(cmp函數)傳給 unique 才可以得到想要的結果。和

58、 remove 一樣 unique 并不真的移除新的結尾和舊的結尾之間的元素,所以一般也需要結合erase使用。例:for(i=0;i10;i+)vt.push_back(i);vt.push_back(i+1); vt.erase(unique(vt.begin(), vt.end(), vt.end();實例程序#include#includeusinga7=*e=unique(a,a+coutEND:(e-實例程序#include#includeusinga7=*e=unique(a,a+coutEND:(e-a)fori=0;i7;+i) coutai=copy(b,b+7,back_

59、inserter(v); unique(v.begin(), v.end();/v.erase(unique(v.begin(),v.end(),coutSize:v.size()forreturni=0;i)v.size();+i)coutvi7. eiteratore(iteratorbegin,iteratormiddle,iterator將begin, middle)和middle, end)兩個區(qū)間內的元素互換最多只需要 end-次交換。例alpha=abcdefghijklmnopqrstuvwxyz; e(alpha, alpha + 13, alpha + 26);f(%sn,

60、alpha);輸出為8. random_shuffle(iteratorbegin,iterator將begin, end)之間的元素隨機重排列,例N=A=1,2,3,4,5,6,7,random_shuffle(A, A + N); copy(A,A+N,ostream_iterator(cout,輸出可能為71632548,或其它40,319中排列中的任意一9.partition/iteratorstable_partition(iteratorbegin,iteratorend,把符合條件(一元判斷9.partition/iteratorstable_partition(iterator

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論