順序容器list與vector的使用方法對比_第1頁
順序容器list與vector的使用方法對比_第2頁
順序容器list與vector的使用方法對比_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、順序容器list與vector的使用方法對比list和vector都是一種順序容器類型,vector支持快速隨機(jī)訪問,list支持快速插入/刪除。定義需包含頭文件:#include <vector>#include <list>要定義某種特殊的容器,都必須在容器名后加一對尖括號(hào),尖括號(hào)里面提供容器中存放的元素的類型:vector <string> secv;list <int> ilist;都定義了默認(rèn)構(gòu)造函數(shù),用于創(chuàng)建制定類型的空容器對象,二者用法相同。c+語言中,大多數(shù)類型都可作容器的元素類型。容器元素類型必須滿足:元素類型必須支持賦值運(yùn)算;

2、元素類型對象必須可以復(fù)制。故除引用類型外,所有內(nèi)置或復(fù)合類型都可用作元素類型,除io標(biāo)準(zhǔn)庫類型外,所有其他標(biāo)準(zhǔn)庫類型都是有效的容器元素類型。故二者都支持容器的容器定義方式:vector < vector < string > > lines;list < list < int > > ilist;c+定義的容器類型中,只有vector和deque容器提供迭代器算術(shù)運(yùn)算以及使用除了=和!=之外的關(guān)系操作符來比較兩個(gè)迭代器(=和!=這兩種關(guān)系運(yùn)算適用于所有容器)。這主要是因?yàn)橹挥羞@兩種容器為其元素提供快速、隨機(jī)的訪問。他們的迭代器可以有效的實(shí)現(xiàn)算術(shù)和

3、關(guān)系運(yùn)算。例如,下面的語句用于計(jì)算vector對象的中點(diǎn)位置:vector < int > vec;vector < int > :iterator iter = vec.begin() + vec.size() / 2;另一方面,代碼:list < int > ilist;list < int > ilist( vec.begin(), vec.end() ); /復(fù)制容器vec中元素到ilist里ilist.begin() + ilist.size() / 2;是錯(cuò)誤的。list容器的迭代器既不支持算術(shù)運(yùn)算,也不支持關(guān)系運(yùn)算,它只提供前置和后

4、置的自增、自減運(yùn)算以及相等(不等)運(yùn)算。二者的迭代器范圍都是big()(指向容器元素范圍的第一個(gè)元素)到end()(指向容器元素范圍的最后一個(gè)元素的下一位置)。所有容器都提供以下類型:都支持push_back的尾部添加元素方法:string text_word;while( cin >> text_word )container.push_back(text_word);container的類型可以是vector和list,二者均可。除了push_back運(yùn)算,list容器還提供了類似的操作:push_front。這個(gè)操作實(shí)現(xiàn)在容器首部插入新元素的功能。如:list < in

5、t > ilist;/在容器ilist的尾部添加元素for( size_t ix = 0; ix != 4; +ix )ilist.push_back(ix);使用push_back運(yùn)算在容器ilist尾部依次添加元素0、1、2、3。然后,我們選擇用push_front操作再次在ilist中添加元素:/在ilist首部添加元素for( size_t ix = 0; ix != 4; ix+ )ilist.push_front(ix);此時(shí),元素0、1、2、3則被依次添加在ilist的開始位置。結(jié)束后,ilist內(nèi)元素為3、2、1、0、0、1、2、3。二者還都支持使用方法insert()在

6、迭代器范圍內(nèi)的任意位置前插入元素:vec.insert( vec.begin() + vec.size() / 2, 3);ilist.insert( ilist.end(), 3 );但應(yīng)注意的是插入元素可能會(huì)使迭代器失效,應(yīng)謹(jǐn)慎使用。所有容器都支持一下操作:容器內(nèi)元素的訪問:list不支持下標(biāo)操作,只能通過對迭代器解引用進(jìn)行訪問,或者通過back()和front()運(yùn)算返回容器的最后一個(gè)和第一個(gè)元素:if ( !ilist.empty() )list < int >:reference val = *ilist.begin();list < int >:reference val2 = ilist.front();list < int >:reference last = *-ilist.end();list < int >:reference last2 = ilist.back();而vector支持下標(biāo)和at()操作,但應(yīng)注意不要造成下標(biāo)越界:vector <

溫馨提示

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

最新文檔

評論

0/150

提交評論