STL使用入門 Using STL

2021-04-30 18:07:28 字數 2429 閱讀 5902

3 結論

c++已經在中國相當普及,但c++ stl卻使用的人不多。許多人有一定成見,認為stl降低了c++的效率。特別是那些自詡為技術專家的人,他們一直使用c語言,對於新事物總是先用批判的眼光對待......先不說這些,我這幾天看見http://stl.winterxy.com **上的這篇小文,發現寫得簡明扼要,通俗易懂。翻譯出來,希望對stl的普及有一定幫助。

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

rule 1:

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

class

tmyclass;

typedef

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

typedef

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

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

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

rule 2

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

class

tmyclass

// 賦值操作符

tmyclass& operator

=(const

tmyclass& obj);

...};

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

rule 3:

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

tmyclass object;

tmyclasslist mylist;

tmyclasslist::iterator it;

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

tmyclass *pobject = &(*it);

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

rule 4:

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

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 ++)

rule 5:

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

tmyclasslist::iterator it;

tmyclass *pobject;

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

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

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

標準模板庫(stl)介紹

stl使用入門

c++ stl程式設計輕鬆入門基礎

e dit

| a ttach

| p rint version

| h istory : r5 <

r4<

r3<

r2<

r1| 

b acklinks

| r aw view

| m ore topic actions

topic revision: r5 - 2005.07.09 - 09:04:04 -

winterwen

STL容器入門

目錄 1.vector 向量 4.map 對映 5.棧6.佇列和優先佇列 c 清空佇列 queue 的幾種方法 方法一方法二 方法三7.deque雙端佇列容器 include include includeaccumulate的標頭檔案 include 向量 using namespace std ...

STL入門總結

首先感謝sls的講解,以下是聽完sls的講解後做的總結筆記,原本對stl一知半解,現在總算通了。1.c stl 標準模板庫 是一套功能強大的 c 模板類,提供了通用的模板類和函式,這些模板類和函式可以實現多種流行和常用的演算法和資料結構,如向量 鍊錶 佇列 棧。2.它的核心是容器,演算法,迭代器 平...

C STL 入門 STL簡介

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