資源描述:
《標(biāo)準(zhǔn)模板庫stl介紹(打印)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、標(biāo)準(zhǔn)模板庫STL(StandardTemplateLibrary)指南目錄1介紹21.1動(dòng)機(jī)21.2STL歷史21.3STL和ANSI/ISOC++草案標(biāo)準(zhǔn)21.4內(nèi)容安排22C++基礎(chǔ)22.1類22.2函數(shù)對象(FunctionObjects)32.3模板(Template)32.3.1函數(shù)模板32.3.2類模板42.3.3模板特化53STL概貌53.1STL網(wǎng)上信息63.2STL文檔63.3編譯STL程序64學(xué)習(xí)STL64.1容器(Container)64.1.1向量(Vector)74.2迭代器(Iterator)94.2.1輸入和輸出迭代器9
2、4.2.2向前迭代器104.2.3雙向迭代器104.2.4任意存取迭代器114.3算法和函數(shù)對象114.3.1如何創(chuàng)建基本算法114.3.2STL算法134.4適應(yīng)器(Adaptor)154.4.1容器適應(yīng)器154.4.2迭代適應(yīng)器154.4.3函數(shù)適應(yīng)器164.5分配算符和內(nèi)存處理165其余的STL部件165.2向量(Vector)165.3線性表(List)165.4雙向隊(duì)列(Deque)175.5迭代標(biāo)簽(IteratorTag)175.6關(guān)聯(lián)容器(Container)17181介紹1.1動(dòng)機(jī)在七十年代末,AlexanderStepanov第一
3、個(gè)發(fā)現(xiàn)一些算法不依賴于數(shù)據(jù)結(jié)構(gòu)的特定實(shí)現(xiàn),而僅僅和結(jié)構(gòu)的一些基本語義屬性相關(guān)。這些屬性表達(dá)了一種能力,比如可以從數(shù)據(jù)結(jié)構(gòu)的一個(gè)成員取得下一個(gè)成員,從頭到尾“走過”結(jié)構(gòu)中的元素〔就象排序算法不關(guān)心元素是存放在數(shù)組中或是線性表中)。Stepanov研究過一些算法可以用一種抽象的方式實(shí)現(xiàn),而且不會(huì)影響效率。1.2STL歷史1985年,Stepanov開發(fā)了基本Ada庫,有人要求他在C++中也這樣做。但直到1987年,模板(Template)在C++中還未實(shí)現(xiàn),所以他的工作推遲了。1988年,Stepanov到HP實(shí)驗(yàn)室工作,并在1992年被任命為一個(gè)算法項(xiàng)
4、目的經(jīng)理。在此項(xiàng)目中,AlexanderStepanov和MengLee寫了一個(gè)巨大的庫---標(biāo)準(zhǔn)模板庫(STL:StandardTemplateLibrary),意圖定義一些通用算法而不影響效率?,F(xiàn)在STL在國外已經(jīng)成了新的編程手段。1.3STL和ANSI/ISOC++草案標(biāo)準(zhǔn)1994年7月14日,ANSI/ISOC++標(biāo)準(zhǔn)化委員會(huì)將STL采納為草案標(biāo)準(zhǔn)?,F(xiàn)在MicrosoftVisualC++5.0以上及BorlandC++4.0以上都支持STL。STL已經(jīng)并將繼續(xù)影響軟件開發(fā)的方法,有了STL,程序員可以寫更少且更快的代碼,把精力集中在問題解決
5、上,而不必關(guān)心低層的算法和數(shù)據(jù)結(jié)構(gòu)了。1.4內(nèi)容安排第2部分介紹STL需要的C++基礎(chǔ),主要是類、函數(shù)對象和模板。第3部分是概貌,介紹了關(guān)鍵的思想。第4部分step-by-step的教STL。第5部分介紹剩余的STL部分。第6部分是版權(quán)信息。第7部分是參考文獻(xiàn)。2C++基礎(chǔ)2.1類請讀下面一段代碼:classshape{private:intx_pos;inty_pos;intcolor;public:shape():x_pos(0),y_pos(0),color(1){}shape(intx,inty,intc=1):x_pos(x),y_pos(
6、y),color(c){}shape(constshape&s):x_pos(s.x_pos),y_pos(s.y_pos),color(s.color){}~shape(){}shape&operator=(constshape&s){x_pos=s.x_pos;y_pos=s.y_pos;color=s.color;return*this;}intget_x_pos(){returnx_pos;}intget_y_pos(){returny_pos;}intget_color(){returncolor;}18voidset_x_pos(intx
7、){x_pos=x;}voidset_y_pos(inty){y_pos=y;}voidset_color(intc){color=c;}virtualvoidDrawShape(){}friendostream&operator<<(ostream&os,constshape&s);};ostream&operator<<(ostream&os,constshape&s){os<<“shape:(“<8、:·缺省構(gòu)造函數(shù)(defaultconstructor)、拷貝構(gòu)造函數(shù)(copyconstructor)、析