/**
* Accelerated C++ 筆記
**/
list容器相當(dāng)于數(shù)據(jù)結(jié)構(gòu)中的鏈表,vector容器相當(dāng)于順序表。
vector是為快速隨機(jī)訪問(wèn)而被優(yōu)化的,同樣地,優(yōu)化了的list類型,可以讓我們?cè)谌萜鞯娜魏挝恢每焖俚牟迦牒蛣h除元素。
在vector內(nèi)部插入或刪除元素,為了保持快速隨機(jī)存取的特性,必須移動(dòng)位于被插入或刪除的元素后面的所有
元素。移動(dòng)元素意味著,時(shí)間復(fù)雜度為向量元素個(gè)數(shù)的二次方。
//用list代替vector:主要是因?yàn)椴迦牒蛣h除操作太多
list<Student_info> extract_fails(list<Student_info>& students)
{
list<Student_info> fail;
list<Student_info>::iterator iter = students.begin();
while(iter != students.end()){
if(fgrade(*iter)){
fail.push_back(*iter);
iter = students.erase(iter);
}
else
++iter;
}
return fail;
}
list容器的迭代器不支持完全隨機(jī)訪問(wèn),所以我們就不能用標(biāo)準(zhǔn)庫(kù)中sort函數(shù)對(duì)它進(jìn)行排序。
對(duì)此,list提供了自己的sort成員函數(shù),這個(gè)函數(shù)使用了 一個(gè)優(yōu)化的算法來(lái)為存儲(chǔ)在list中的數(shù)值排序。
list<Student_info> students
students.sort(compare);//compare函數(shù)可以自己定義
posted on 2008-10-04 15:03
xuejzt 閱讀(1339)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
C++