實用技巧與模版庫ppt課件
《實用技巧與模版庫ppt課件》由會員分享,可在線閱讀,更多相關(guān)《實用技巧與模版庫ppt課件(50頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第八章C+實用技巧與模版庫,1,在本章中將介紹各種各樣實用的提高我們編程效率的小技巧和模版庫。其中絕大多數(shù)依靠C+自帶類和函數(shù)實現(xiàn)。,2,第一節(jié)排序算法,排序算法為競賽中最常用的算法之一,我們可以利用C+自帶的庫函數(shù)進行排序。,3,使用排序算法必須包含algorithm頭文件自帶排序算法的一般形式為:/將數(shù)組arr的下標為m的元素到下標為n-1的元素進行從小到大排序sort(arr+m,arr+n);sort(arr+m,arr+n,comp);/與sort(arr+m,arr+n);相比,這個/寫法可以自己定義排序的規(guī)則/其中,comp為自定義的函數(shù),4,對于sort(arr+m,arr+n)我們舉個簡單的例子:/這個程序?qū)崿F(xiàn)從鍵盤讀入10個數(shù),然后從小到大輸出的功能#include#includeusingnamespacestd;inta10;intmain()for(inti=0;iai;sort(a+0,a+10);for(inti=0;i10;+i)coutai;coutn;for(inti=0;iai.name;cinai.score;sort(a+0,a+n,score_comp);for(inti=0;in;+i)coutai.nameai.score(istream,16,我們已經(jīng)可以實現(xiàn)高精度數(shù)的存儲,賦值,初始化,輸入,輸出了?,F(xiàn)在一定迫不及待的想知道如何實現(xiàn)高精度的運算了吧。由于篇幅有限,本文僅展示”+”、”+=”重載。這個也是寫在結(jié)構(gòu)體里面:BIGNUMoperator+(constBIGNUM,17,對于數(shù)字,我們不僅會對它們進行計算,有時我們還會對他它們進行比較,當然這個也要進行運算符重載,依然是在結(jié)構(gòu)體里面補充相關(guān)代碼:我們先重載下“=0;-i)if(si!=x.si)returnsix.si;returnfalse;/全部都相等,說明小于不成立,18,現(xiàn)在用”(constBIGNUM,19,例8.2運用重載的例子:給出n和m,求出1!+2!+3!+.+n!是否大于m.大于m的話輸出”yes”,否則輸出”no”.其中0n101,mnm;for(inti=1;im)coutyesendl;elsecoutnos)cout+totsendl;return0;,30,我們用下劃線_代替空格,讀入時記得使用空格輸入樣例:_Hello_world!_Today_輸出樣例:1Hello2world!3Today,31,正如介紹的那樣,讀入時忽略了空字符,讀者可以將其記作cin讀字符串讀的是單詞。當然,有時我們更希望讀取的是句子。幸好C+提供了getline函數(shù)以供使用。getline的原型是:getline(cin,s);cin指的是讀入流,一般情況下我們直接寫cin即可,s是字符串,即我們讀入的東西要存放的字符串。,32,我們用getline來讀取上面的數(shù)據(jù):程序:#include#includeusingnamespacestd;intmain()strings;inttot=0;while(getline(cin,s)/getline()讀入會舍棄換行符cout+totsendl;return0;我們依舊使用下劃線_代替空格.輸出為:1_Hello_world!_2_Today_,33,string類型的操作,34,字符串類型相加:strings1(“hello”);/等價于strings1=”hello”;strings2(“worldn”);s1+=s2/等價于s1=s1+s2,此時s1=”helloworldn”字符串“+”操作符的左右操作數(shù)必須有一個為字符串類型。strings1=”hello”;strings2=”world”;strings3=s1+”,”;/合法strings4=”hello”+”world”;/非法法strings5=s1+”,”+”world”;/合法,根據(jù)從左至右的結(jié)合法則/s1+”,”變成一個字符串類型,然后再與”world”相連。strings6=”hello”+”,“+s2;/非法,因為”hello”與”,”都是字符數(shù)組類型,35,字符串的下標操作:stringstr=”2+2=4”;coutstr1endl;/將輸出+str1=*;/現(xiàn)在str1變成了*其它一些常用操作:,36,將字符串類型的變量轉(zhuǎn)化為數(shù)字:/錯誤方法#include#include#includeusingnamespacestd;intmain()strings1=1234,s2=4321;couts1+s2endl;return0;正如前面所講s1+s2是將兩個字符串類型相連,37,/正確方法#include#include#includeusingnamespacestd;intmain()strings1=1234,s2=4321;inta,b;sscanf(s1.c_str(),%d,同樣也可以利用sprintf()將數(shù)據(jù)輸入到sprintf()。sscanf()/sprintf()的用法與scanf()/printf相同,只是在參數(shù)中第一個加個字符數(shù)組。,38,第四節(jié)FIFO隊列和優(yōu)先隊列,在實際應(yīng)用中,我們將會大量使用到FIFO隊列和優(yōu)先隊列,本節(jié)將介紹這兩個C+自帶算法。,39,當然,使用他們必須包含queue頭文件。定義FIFO隊列queue變量名queueque/定義que為一個int類型的FIFO隊列queuea/定義a為一個char類型的FIFO隊列queuec/定義c為一個data類型的FIFO隊列/其中data為自定義的數(shù)據(jù)類型,可以為結(jié)構(gòu)體定義簡單的優(yōu)先隊列priority_queueheap;/定義heap為一個int類型的優(yōu)先隊列priority_queuek;/定義k為一個double類型的優(yōu)先隊列這兩種定義方式都是大根堆,想要使其變成小根堆,可以將每個數(shù)據(jù)都乘以-1,40,定義結(jié)構(gòu)體的優(yōu)先隊列structdataintx;booloperatorq;/q優(yōu)先隊列的優(yōu)先規(guī)則由data重載小于號決定,41,FIFO隊列和優(yōu)先隊列的操作,42,利用C+自帶優(yōu)先隊列的合并果子代碼:#include#include#includeusingnamespacestd;priority_queueque;intmain()intn;scanf(%d,return0;,43,第五節(jié)動態(tài)數(shù)組為了節(jié)省空間,有時我們會使用動態(tài)數(shù)組vector。定義動態(tài)數(shù)組vector變量名vectorque/定義que為一個int類型的動態(tài)數(shù)組vectora/定義a為一個char類型的動態(tài)數(shù)組vectorc/其中data為自定義的數(shù)據(jù)類型,可以為結(jié)構(gòu)體,44,45,利用C+動態(tài)數(shù)組實現(xiàn)的排序代碼:#include#include#include#includeusingnamespacestd;intmain()vectora;/動態(tài)數(shù)組intn;scanf(%d,46,第六節(jié)關(guān)聯(lián)式容器map在實際應(yīng)用中,我們可以使用map容器來作為一個有序的映射表,可以將其看做是一個下標可以是任何類型的數(shù)組。對map單次操作的時間復雜度為O(lgn)。定義mapmap變量名;mapma;/定義ma為一個從string到int的一個映射訪問map中的元素mapma;/定義mama“abc”=2;/將字符串”abc”映射到整數(shù)”2”上coutma“abc”endl;/屏幕上將輸出整數(shù)2同時,map中的類型可以是自己定義的結(jié)構(gòu)體,此時結(jié)構(gòu)體中應(yīng)該有重載小于符號。,47,map的操作:,48,注意:一旦map中的一個元素被訪問,不論它之前是否已經(jīng)被賦值,它都將被視為已經(jīng)存在,例如:if(ma“abc”)/*dosomething*/;if(ma.count(“abc”)cout#include#includeusingnamespacestd;mapma;,49,intmain()maapple=1;mabanana=2;malemon=3;coutfirstsecondendl;/輸出malemon,即輸出3return0;,50,- 1.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
30 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 實用技巧 模版 ppt 課件
鏈接地址:http://italysoccerbets.com/p-3274559.html