




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C++STL標準容器插入刪除算法的復雜度(來源flyhorse)/jenus1/archive/2008/03/29/2227691.aspx1vector內部實現:數組//就是沒有固定大小的數組,vector直接翻譯是向量的意思支持操作:begin(),〃取首個元素,返回一個iteratorend(),//取末尾(最后一個元素的下一個存儲空間的地址)size(),//就是數組大小的意思clear(),//清空empty(),〃判斷vector是否為空口〃很神奇的東東,可以和數組一樣操作〃舉例:vectora;〃定義了一個vector〃然后我們就可以用a[i]來直接訪問a中的第i+1個元素!和數組的下標一模一樣!push_back(),pop_back()〃從末尾插入或彈由insert()O(N)//插入元素,O(n)的復雜度erase()O(N)〃刪除莫個元素,O(n)的復雜度可以用于數組大小不定且空間緊張的情況2deque類似〃雙端隊列,兩頭都支持進由支持push_front()和pop_front()是的精簡版:)〃棧,只支持從末尾進由支持push(),pop(),top()是的精簡版〃單端隊列,就是我們平時所說的隊列,一頭進,另一頭由支持push(),pop(),front(),back()3list內部實現:雙向鏈表〃作用和vector差不多,但內部是用鏈表實現支持操作:begin(),end(),size(),clear(),empty()push_back(),pop_back()〃從末尾插入或刪除元素push_front(),pop_front()insert()O(1)〃鏈表實現,所以插入和刪除的復雜度的O(1)erase()O(1)sort()O(nlogn)(logn)找不到返〃不支持[]操作!4set內部實現:紅黑樹//Red-BlackTree,一種平衡的二叉排序樹〃又是一個Compare函數,類似于qsort函數里的那個Compare函數,作為紅黑樹在內部實現的比較方式insert()O(logn)erase()O(logn)find()O回a.end()lower_bound()O(logn)查找第一個不小于k的元素upper_bound()O(logn)查找第一個大于k的元素equal_range()O(logn)返回pair5multiset允許重復元素的6map內部實現:pair組成的紅黑樹//map中文意思:射!!〃就是很多pair組成一個紅黑樹insert()O(logn)erase()O(logn)find()O(logn)找不到返回a.end()lower_bound()O(logn)查找第一個不小于k的元素upper_bound()O(logn)查找第一個大于k的元素equal_range()O(logn)返回pair[key]運算符O(logn)***//這個..太猛了,怎么說呢,數組有一個下標,如a[i],這里i是int型的。數組可以認為是從int印射到另一個類型的印射,而map是一個任意的印射,所以i可以是任何類型的!7multimap允許重復元素,沒有口運算符8priority_queue內部實現:堆〃優先隊列支持操作:push()O(n)pop()O(n)top()O(1)Seealso:push_heap(),pop_heap()9hashinmap內部實現:Hash表〃內部用哈希表實現的map重載HashFcn和EqualKey支持操作:insert();0(1)earse();O(1)口;O(1)1.sort()voidsort(RandomAccessIteratorfirst,RandomAccessIteratorlast);voidsort(RandomAccessIteratorfirst,RandomAccessIteratorlast,StrictWeakOrderingcomp);區間[first,last)Quicksort,復雜度O(nlogn)(n=last-first,平均情況和最壞情況)用法舉例:.從小到大排序(int,double,char,string,etc)constintN=5;intmain(){inta[N]={4,3,2,6,1};stringstr[N]={“TJU","ACM,"ICPC","abc","kkkkk"};sort(a,a+N);sort(str,str+N);return0;).從大到小排序(需要自己寫comp函數)constintN=5;intcmp(inta,intb){returna>b;}intmain(){inta[N]={4,3,2,6,1};sort(a,a+N,cmp);return0;}.對結構體排序structSS{intfirst,second;};intcmp(SSa,SSb){if(a.first!=b.first)returna.first<b.first;returna.second<b.second;}v.s.qsort()inC(平均情況O(nlogn),最壞情況O(nA2))//qsort中的cmp函數寫起來就麻煩多了!intcmp(constvoid*a,constvoid*b){if(((SS*)a)->first!=((SS*)b)->first)return((SS*)a)->first-((SS*)b)->first;return((SS*)a)->second—((SS*)b)->second;)qsort(array,n,sizeof(array[0]),cmp);sort()系歹U:stable_sort(first,last,cmp);//穩定排序partial_sort(first,middle,last,cmp);//部分排序將前(middle-first)個元素放在[first,middle)中,其余元素位置不定A[12]={7,2,6,11,9,3,12,10,8,4,1,5};partial_sort(A,A+5,A+12);〃結果是“123451112109876".Detail:Heapsort,O((last-first)*10g(middle-first))sort()系歹U:partial_sort_copy(first,last,result_first,result_last,cmp);〃輸入到另一個容器,不破壞原有序列boolis_sorted(first,last,cmp);〃判斷是否已經有序nth_element(first,nth,last,cmp);〃使[first,nth)的元素不大于[nth,last),O(N)e.g.input:7,2,6,11,9,3,12,10,8,4,1,5nth_element(A,A+6,A+12);Output:5261437891011122.binary_search()boolbinary_search(ForwardIteratorfirst,Forwarditeratorlast,constLessThanComparable&value);boolbinary_search(ForwardIteratorfirst,Forwarditeratorlast,constT&value,StrictWeakOrderingcomp);在[first,last)中查找value,如果找到返回Ture,否則返回False二分檢索,復雜度O(log(lastfirst))v.s.bsearch()inCBinary_search()系歹Uitrupper_bound(first,last,value,cmp);//itr指向大于value的第一個值(或容器末尾)itrlower_bound(first,last,value,cmp);//itr指向不小于valude的第一個值(或容器末尾)pairequal_range(first,last,value,cmp);〃找生等于value的值的范圍O(2*log(last-first))intA[N]={1,2,3,3,3,5,8}*upper_bound(A,A+N,3)==5*lower_bound(A,A+N,3)==3make_heap(first,last,cmp)O(n)push_heap(first,last,cmp)O(logn)pop_heap(first,last,cmp)O(logn)is_heap(first,last,cmp)O(n)e.g:vectorvi;while(scanf("%d',&n)!=EOF){vi.push_back(n);push_heap(vi.begin(),vi.end());}Othersinteresting:next_permutation(first,last,cmp)prev_permutation(first,last,cmp)//bothO(N)min(a,b);max(a,b);min_element(first,last,cmp);max_element(first,last,cmp);Othersinteresting:fill(first,last
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版物流倉儲PPP項目合作協議范本標準
- 二零二五年度智能家居產品售后服務與用戶培訓合同
- 二零二五年度汽車售后服務保障合同范本版
- 2025版彩鋼瓦屋頂通風換氣系統安裝合同
- 二零二五年車庫車位租賃代理服務合同
- 2025版能源領域PPP項目合作協議范本標準
- 二零二五年度養老地產不動產抵押經營租賃合同
- 教育資源質量評價指標構建-洞察及研究
- 湖北公務員行測(A類)真題及答案
- 面膜代賣協議書范本
- 《震擊器分類大全》
- 橋梁結構設計原理-課件
- 2023年簡約黑板風2023高三復學開學第一課主題班會
- 2023上海市安全員《B證》考試題庫
- 語文高考專題復習【知識精講精析+能力拓展提升 】 詩化小說之紅柯《麥子》
- 城市消防站建設標準
- 煙葉制絲操作工(中級)技能檢定考試題庫(附答案)
- 江蘇省泰州市泰興市招聘勞動保障協理員試題及答案解析
- 石灰窯風險辨識管控、各級隱患排查清單
- GB/T 714-2015橋梁用結構鋼
- GB/T 4854.1-2004聲學校準測聽設備的基準零級第1部分:壓耳式耳機純音基準等效閾聲壓級
評論
0/150
提交評論