最近學習c++設計模式,無意看到list容器這個用法,就捉摸著大致整理下。也方便以後自己學習著。
提起list,我們就必須談到stl(standed template library--標準模板庫),是ansi/iso c++標準中最新的也是極具革命性的一部分。該庫包含了諸多在電腦科學領域裡所常用的基本資料結構和基本演算法。為廣大c++程式設計師們提供了乙個可擴充套件的應用框架,高度體現了軟體的可復用性。從邏輯層次來看,在stl中體現了泛型化程式設計的思想(generic programming),引入了諸多新的名詞,比如像需求(requirements),概(concept),模型(model),容器(container),演算法(algorithmn),迭代子(iterator)等。與oop(object-oriented programming)中的多型(polymorphism)一樣,泛型也是一種軟體的復用技術。 從實現層次看,整個stl是以一種型別引數化(type parameterized)的方式實現的,這種方式基於乙個在早先c++標準中沒有出現的語言特性--模板(template)。如果查閱任何乙個版本的stl源**,你就會發現,模板作為構成整個stl的基石是一件千真萬確的事情。除此之外,還有許多c++的新特性為stl的實現提供了方便。
說了這麼多,一句話概括,有了stl大大方便了研發人員的操作,現在言歸正傳。
list每次增加乙個元素,不存在重新申請記憶體的情況,它的成本是恆定的。而vector每當增加關鍵元素的時候,都需要重新申請新的更大的記憶體空間,會呼叫元素的自身的複製建構函式,存在構造成本。在銷毀舊記憶體的時候,會呼叫析構函式,存在析構成本。所以在儲存複雜型別和大量元素的情況下,list比vector更有優勢!另外list沒有備份空間的概念,出入乙個元素就申請乙個元素的空間,所以它的迭代器不會失效 。
list::iterator itor;
listilist;
vector::difference_type cnt;
for(size_t mx=0;mx!=4;++mx)
itor=ilist.begin();//返回指向第乙個元素的迭代器
//判斷是否是最後乙個元素
while(itor!=ilist.end())
{ cout<< *itor++<::iterator int_itor=find(ilist.begin(),ilist.end(),5);//查詢這個煉表裡是否有元素5
cout <<"result=" <<*int_itor << endl;
ilist.erase(int_itor);
while(!ilist.empty())
{ cout<<"remove : " << ilist.front()<
Collection中list集合的應用常見的方法
集合 用存放物件的容器 集合 collection 跟介面 單列集合 list 有序的 元素是可以重複的。set 無序的 元素是不可以重複的。collectionz紅常用的方法 增add 新增乙個元素 addall a.addall b 將b中的元素新增到a中。刪remove object o 移除...
c 中的list用法
include include include include using namespace std 建立乙個list容器的例項listint typedef list listint 建立乙個list容器的例項listchar typedef list listchar void main vo...
C 中List的排序
c 中list可以儲存任意型別的物件,本文實現一種較為簡單的排序方法 1 定義類物件 public class cattributefeature public double m dattributefeature public cattributefeature string strname,do...