C STL使用入門

2021-06-16 20:41:42 字數 1889 閱讀 6114

stl((standard template library,標準模板庫)。

我最開始接觸c++程式設計是從dos下的borland c++開始的。那時他們在最新版本3.1中就包含了一套模板庫用來做collection.那真是個好東東。當我開始使用visual c++ 2.2的時候,我甚至試圖去把borland公司的collection模板庫嵌入到visual c++中去,但是沒有成功。唯一可行的解決方案是切換到微軟(microsoft)的collection上,它是mfc的一部分分。但總是有些問題,其原因如下:

你可以生成stl容器,用來存放物件或者指向物件的指標。

class tmyclass;

typedef listtmyclasslist;     // 用於存放物件的list容器

typedef listtmyclassptrlist; // 用於存放物件指標的list容器

一般來說,list容器用於存放物件。但是,如果你是需要儲存一些機器資源(例如,檔案控制代碼,命名管道、套接字(socket)或者其他類似的資源),那麼你需要使用list來儲存指向這些物件的指標。

如果容器是儲存的物件,則在容器析構的時候會自動清理這些物件。但,如果它儲存的是物件的指標,刪除指標就應該是程式設計師的責任了。

對需要儲存到容器中的物件的型別來說,每個類都必須至少實現拷貝建構函式,最好還能過載賦值操作符。

class tmyclass

// 賦值操作符

tmyclass& operator=(const tmyclass& obj);   

};當你把乙個物件的例項插入到容器中,stl會自己重新生成乙個此物件的拷貝,因此拷貝建構函式就成為必須的了。如果你沒有為拷貝建構函式寫正確的**,就有可能造成list中物件的某些資料成員沒有初始化。

按照下列方式把乙個物件插入到容器中:

tmyclass object;

tmyclasslist mylist;

tmyclasslist::iterator it;

it = mylist.insert(mylist.end(), object);

tmyclass *pobject = &(*it);

上面的例子顯示了如何把乙個物件插入容器中,並得到這個在容器中的物件的指標。

由於容器將會為這個物件產生乙個新的拷貝,原始的那個物件例項就不再使用了,因此得到其指標是很有必要的。若你是用list來儲存指標,這個操作就沒有多大必要了,因為原始的指標會被儲存到容器中。

通過下面的方式,使用迭代器遍歷整個容器:

tmyclasslist::iterator it;

tmyclass *pobject;

for (it = mylist.begin(); it != mylist.end(); it ++)

不過,若你是用容器來儲存物件的指標,上面的**需要做如下修改:

tmyclasslist::iterator it;

tmyclass *pobject;

for (it = mylist.begin(); it != mylist.end(); it ++)

按照下面的方法可以刪除容器中的元素:

tmyclasslist::iterator it;

tmyclass *pobject;

for (it = mylist.begin(); it != mylist.end(); it ++)

容器不會刪除其儲存的指標,需要手動刪除,因此再上面**中增加了額外一行。

stl中唯一缺少的乙個函式就是cstring::format() .

希望本文能給你足夠的資訊,讓你能開始使用stl,你會驚奇的發現,一切都十分簡單!

c stl應用入門

在這篇中,我會講幾個簡單易懂且比較常用的stl函式,這些函式在noip系列考試中往往被允許使用 既然讓用我們自然不用手碼了.末尾有驚喜!絕大部分剛入門的oier第乙個接觸的stl函式就是sort函式,這是乙個簡單而又快速的排序函式 通過內部整合的快速排序的 可以在o nlogn 的時間內完成乙個長度...

C STL 佇列入門

2 queue queue 模板類的定義在標頭檔案中。與stack 模板類很相似,queue 模板類也需要兩個模板引數,乙個是元素型別,乙個容器類 型,元素型別是必要的,容器型別是可選的,預設為deque 型別。定義queue 物件的示例 如下 queueq1 queueq2 queue 的基本操作...

C STL 入門 STL簡介

stl standard template library,標準模板庫 是 c 語言標準中的重要組成部分。stl 以模板類和模板函式的形式為程式設計師提供了各種資料結構和演算法的精巧實現,程式設計師如果能夠充分地利用 stl,可以在 空間 執行時間和編碼效率上獲得極大的好處。stl 大致可以分為三大...