stl (標準模版庫,standard template library)
和mfc相比,stl更加複雜和強大。stl有以下的一些優點:
---可以方便容易地實現搜尋資料或對資料排序等一系列的演算法;
---除錯程式時更加安全和方便;
---stl是跨平台的
一些基礎概念的定義
模板(template)——類(以及結構等各種資料型別和函式)的巨集(macro)。正規名稱叫范型(generic)——乙個類的模板叫做范型類(generic class),而乙個函式的模板也自然而然地被叫做范型函式(generic function)。
容器(container)——可容納一些資料的模板類。stl中有vector,set,map,multimap和deque等容器。
向量(vector)——基本陣列模板,這是乙個容器。
游標(iterator)——是乙個指標,用來指向stl容器中的元素,也可以指向其它的元素。
//程式:vector演示一
//目的:理解stl中的向量
// #include "stdafx.h" -如果使用預編譯的標頭檔案就包含這個標頭檔案
#include // stl向量的標頭檔案。這裡沒有".h"。
#include // 包含cout物件的標頭檔案。
using namespace std; //保證在程式中可以使用std命名空間中的成員。
char* szhw = "hello world"; //這是乙個字元陣列,以」/0」結束。
int main(int argc, char* argv)
// push_back函式將資料放在向量的尾部。
// 將向量中的字元乙個個地顯示在控制台
for (vi=vec.begin(); vi!=vec.end(); vi++)
// 這是stl迴圈的規範化的開始——通常是 "!=" ,而不是 "<". 因為"<" 在一些容器中沒有定義。
// begin()返回向量起始元素的游標(iterator),end()返回向量末尾元素的游標(iterator)。
// 使用運算子 「*」 將資料從游標指標中提取出來。
cout << endl; // 換行
return 0;
}push_back是將資料放入vector(向量)或deque(雙端佇列)的標準函式。insert是乙個與之類似的函式,然而它在所有容器中都可以使用,但是用法更加複雜。end()實際上是取末尾加一(取容器中末尾的前乙個元素),以便讓迴圈正確執行——它返回的指標指向最靠近陣列界限的資料。就像普通迴圈中的陣列,比如for (i=0; i<6; i++) ——ar[6]是不存在的,在迴圈中不會達到這個元素,所以在迴圈中不會出現問題。
stl的初始化
stl中容器的初始化比c/c++陣列初始化要麻煩的多。只能乙個元素乙個元素地來,或者先初始化乙個普通陣列再通過轉化填放到容器中。通常可以這樣做:
//程式:初始化演示
//目的:為了說明stl中的向量是怎樣初始化的。
#include // 和相同
#include
using namespace std;
int ar[10] = ;
char* str = "hello world";
int main(int argc, char* argv)
在程式設計中,有很多種方法來完成同樣的工作。另一種填充向量的方法是用更加熟悉的方括號,
雖然在初始化時很麻煩,一旦將資料填如向量中,就實現了乙個變長的可擴充的二維陣列(大小可擴充直到使用完記憶體)。根據實際需要,可以使用各種容器的巢狀組合。
標準模版庫
include include include include using namespace std int main void 使用迭代器遍歷裡面的全部元素 vector iterator itor for itor vec.begin itor vec.end itor cout size v...
C 標準庫和C 標準模版庫
c 標準庫很大,在現在的情況下,c 標準庫確實越來越好,因為大的庫會包含大量的功能.標準庫中的功能越多,開發自己的應用程式時能借助的功能就越多,c 庫並非提供一切 很明顯的是沒有提供開發和圖形使用者介面的支援 但確實提供了很多.標準c 庫中主要有以下主要元件 標準c庫.i 0流技術.string.容...
STL標準模版庫 set操作
include include include include include 仿函式 set是乙個集合,變數內容是唯一的,其中值的順序是按照規則排列的 在插入的時候要刪除,要刪除原有資料在插入。不支援直接訪問操作,不能指定插入位置 using namespace std inttestset01 ...