溫故而知新 C和C 4 STL概覽

2021-06-20 11:39:58 字數 1965 閱讀 6095

一、stl簡介

1、什麼是stl:

標準模板庫(standard template library , stl)是乙個c++通用庫,其目的在於將組建標準化,節省開發者的時間和精力。從組織上來看,stl可分為六大部分,分別是迭代器(iterators)、演算法(algorithms)、容器(container)、函式物件(function object)、記憶體分配器(allocator)和配接器(adapter)。其中的**採用了模板類和模板函式實現,極大地提高了程式設計效率。stl相對於傳統的程式設計方法,可以更好地實現**的重用。

stl除了具有節省開發成本的有點之外,還具有以下特點:通用性好;執行效率高;資料結構簡單卻嚴謹、層次化好;安全機制完善、有較好的記憶體管理方法。

2、關於命名空間namespace:

命名空間技術是stl的特性之一,主要用於解決軟體的模組元件化而可能產生的命名衝突。這種衝突主要來自不同看模組和庫針對不同的物件所採用的相同的識別符號表示。命名空間是開放的,因此利用乙個namespace定義的一些元件可以散布於多個**模組內。如c++標準庫採用的就是乙個命名空間,即「標準命名空間」std。如果在**中使用了using namespace std;則會預設呼叫這個std命名空間內的識別符號;如果要指定呼叫某個命名空間的識別符號,則需要使用namespace::obj的方法,如:

std::cout<<"hello world!"《需要注意的是,最好不要在標頭檔案、模組等位置使用using namespace宣告,因為這可能會改變namespace的作用範圍,導致其他模組收到未知的影響。

二、stl的基本結構

1、容器

容器類是stl的基本類之一,是可以包容其他類的結構。常見的有向量類(vector)、鍊錶類(deque)、雙向佇列(list)、集合(set)、圖(map)等。

1)vector:一種容量可變的向量,可以實現順序表結構的功能;

2)list:雙向鍊錶容器,實現鍊錶的功能;

3)queue:佇列容器,實現佇列結構的功能;

4)stack:棧容器,實現棧資料結構的功能;

5)deque雙端佇列;

6)priority_queue按值排序的佇列;

7)set集合容器

8)multiset多重集合容器,允許出現重複元素;

9)map鍵值對容器,可以實現根據key對val的查詢;

10)multimap多重鍵值對,允許出現重複的key值;

根據這些容器的不同特點,可以分為兩大類:

(1)順序式容器:vector、list、deque等;(2)關聯式容器:set、map等。

2、演算法

stl提供了多種針對不同資料結構的演算法,定於與std命名空間中,引用如下標頭檔案後可以獲取:

#include

一般來說,stl提供的演算法函式具有多種優點:定義、操作簡單;能根據輸入資料的型別自動選擇最合適的演算法;

具體針對不同物件的演算法函式可以參考相關書籍和文件。

3、迭代器

迭代器為訪問容器提供了通用的方法,可以允許程式對容器進行反覆訪問,其作用類似於指向物件的指標。stl定義了5種不同的迭代器,以使用方式分別命名為輸入、輸出、前向、雙向和隨機訪問5種,可用於不同種類的容器。不同的迭代器的特點和支援的容器型別如下所示:

1)輸入迭代器:前向讀取,支援istream等;

2)輸出迭代器:前向寫入,支援ostream、inserter等;

3)前向迭代器:前向讀寫;

4)雙向迭代器:前向+反向讀寫,支援list、set(包括multiset)、map(包括multimap)等;

5)隨機訪問迭代器:隨機讀寫,支援vector、deque、string等。

4、函式物件、記憶體分配器和配接器

所謂函式物件,可以理解為函式的一般形式;配接器主要用於介面間的轉換,比如把資料從乙個類中移到另乙個類;記憶體分配器應用較少,接觸到的時候再詳述。

C 陣列 溫故而知新

using system using system.collections.generic using system.linq using system.text namespace 陣列 陣列初始化器只能在宣告陣列變數時使用,不能在宣告陣列之後使用 int iii new int 用花括號初始化陣...

C 溫故而知新,好吃

這一周,在業餘的時候,學習和 了c 中的知識點,一木不成林,一水難成海。1.net 是乙個開發平台,它幹著秦始皇的事,統一了程式設計類庫,提供了網路通訊標準可擴充套件標記語言的完全支援。方便你我他,大家使好它。microsoft.net 是microsoft xml web services平台。2...

溫故而知新 4 C 函式

1.簡單的函式 關鍵字 static,void 如果有返回值,必須在函式結束前return 返回值 引數一定要匹配 陣列也可以作為引數傳遞,陣列中的元素型別一致。public static void ask params int arg 2.引用引數和值引數 ref,out都是用來修飾引數的。ref...