Download presentation
Presentation is loading. Please wait.
Published byEvelyn Mathews Modified 6年之前
1
【STL標準樣版函式庫】 STL(Standard Template Library),即標準樣版函式庫,是一個具有工業標準、高效率的C++函式庫。它包含於C++標準函式庫(C++ Standard Library)中,是ANSI/ISO C++標準中,最新的、也是極具革命性的一部分。STL包含了諸多在電腦科學領域裏所常用的基本資料結構和基本演算法。為廣大C++程式師們提供了一個可擴展的應用框架,高度實現了軟體的可複用性。這種現象有些類似於Microsoft Visual C++中的MFC(Microsoft Foundation Class Library),或者是Borland C++ Builder中的VCL(Visual Component Library)。
2
【C++標準函式庫】
3
【 STL 六大組件】 (1)容器(Container),是一種資料結構,如list,vector,和deque ,以樣版類的方法提供。為了訪問容器中的資料,可以使用由容器類輸出的迭代器。 (2)迭代器(Iterator),提供了訪問容器中物件的方法。例如,可以使用一對迭代器指定list或vector中的一定範圍的物件。迭代器就如同一個指標。事實上,C++的指標也是一種迭代器。 (3)演算法(Algorithm),是用來操作容器中的資料的樣版函式。例如,STL用sort()來對一個vector中的資料進行排序、用find()來搜索一個list中的物件,函式本身與他們操作的資料的結構和類型無關,因此他們可以在從簡單陣列到高度複雜容器的任何資料結構上使用。 (4)仿函式(Function object) (5)迭代適配器(Adaptor) (6)空間配製器(allocator)
4
【迭代器 Iterators】 迭代器提供對一個容器中的物件的訪問方法,並且定義了容器中物件的範圍。迭代器就如同一個指標。事實上,C++的指標也是一種迭代器。 迭代器有各種不同的建立方法。程式可能把迭代器作為一個變數。一個STL容器類可能為了使用一個特定類型的資料而建立一個迭代器。作為指標,必須能夠使用*運算子獲取資料。你還可以使用其他數學運算子,如++。典型++運算子用來遞增迭代器,以訪問容器中的下一個物件。如果迭代器到達了容器中的最後一個元素的後面,則迭代器變成past-the-end值。若指標使用一個past-the-end值來訪問物件是非法的,就好像使用NULL或為初始化的指標一樣。
5
【容器的iterator類型】 每種容器類型都定義了自己的迭代器類型,例如:
vector<int>::iterator iter; 宣告一個名為iter的變數,它的資料型態是由vector<int>定義的iterator類型。 map<int,char*>::iterator iter; 宣告了一個名為iter的map<int,char*>類型的迭代器 每個標準庫容器類型都定義了一個名為iterator的成員,這裏的iterator與迭代器實際類型的含義相同。初學程式設計,第一次遇到有關迭代器的術語時可能會困惑不解,產生困惑的原因之一,是由於同一個術語iterator表示兩個不同的事物。
6
【 begin和end操作】 每種容器都定義了一對命名為begin和end的函式,用於傳回迭代器。如果容器中有元素的話,由begin傳回的迭代器指向第一個元素。 vector<int>::iterator iter = v.begin(); 上述敘述把iter初始化為由名為v的vector進行begin操作傳回的值。假設vector不為空,初始化後,iter即指該元素v[0]。 由end操作傳回的迭代器指向vector的“末端元素的下一個”。通常稱為超出末端迭代器(off-the-end iterator),表明它指向了一個不存在的元素。如果vector為空,begin傳回的迭代器與end傳回的迭代器相同。 由end操作傳回的迭代器並不指向vector中任何實際的元素,相反,它只是起一個崗哨(sentinel)的作用,表示我們已處理完vector中所有元素。
7
To be Continue… 回目錄頁
Similar presentations