STL標準模板庫介紹

2022-03-23 04:17:34 字數 1604 閱讀 5254

1. stl介紹

標準模板庫stl是當今每個從事c++程式設計的人需要掌握的技術,所有很有必要總結下

stl的最大特點就是:

資料結構和演算法的分離,非物件導向本質。訪問物件是通過象指標一樣的迭代器實現的;

容器是象鍊錶,向量之類的資料結構,並按模板方式提供;

演算法是函式模板,用於操作容器中的資料。由於stl以模板為基礎,所以能用於任何資料型別和結構。

容器可以分為三種主要型別:序列容器、關聯容器、容器介面卡。

每種stl容器都具有相關聯的成員函式,這些成員函式的乙個子集在所有的stl容器中都定義了。

stl迭代器的屬性和指標類似,程式可以利用迭代器操作stl容器中的元素

stl演算法是用於執行常見資料操作的函式,這些操作包括搜尋、排序和比較元素,stl提供了大約70種演算法,其中大多數演算法都使用迭代器來訪問容器元素。

1.1   容器簡介

容器可以分為三種:序列容器、關聯容器、容器介面卡。

序列容器:vector deque list

vector:可從後端執行快速的插入和刪除,直接訪問任何元素

deque:從前面或後面執行快速的插入和刪除,直接訪問任何元素

list:雙鏈表,能在任何地方執行快速的插入和刪除

關聯容器:set multiset map multimap

set:執行快速搜尋,元素不允許重複

multiset:執行快速搜尋,元素允許重複

map:一對一對映,元素不允許重複,快速的基於鍵的搜尋

multimap:一對多對映,元素允許重複,快速的基於鍵的搜尋

容器介面卡:stack queue priority_queue

stack:後進先出

queue:先進先出

priority_queue:優先順序最高的元素總是最先出隊

序列容器表示線性資料結構,例如向量和鍊錶;

關聯容器是非線性容器,通常能夠快速找出儲存在容器中的元素。這類容器能夠儲存值的集合或鍵/值對;序列容器和關聯容器統稱為第一類容器。

stl將堆疊和佇列實現為容器介面卡,使程式以一種受約束的方式看待序列容器。

stl通常可通過模板實現泛型程式設計,以避免繼承和虛函式,獲得更好的執行時效能。

1.2   迭代器簡介

迭代器在許多方面和指標相同,用於指向第一類容器的元素。

迭代器提供對乙個容器中的物件的訪問方法,並且定義了容器中物件的範圍。迭代器就如同乙個指標。事實上,c++的指標也是一種迭代器。但是,迭代器不僅僅是指標,因此你不能認為他們一定具有位址值。例如,乙個陣列索引,也可以認為是一種迭代器。

迭代器有各種不同的建立方法。程式可能把迭代器作為乙個變數建立。乙個stl容器類可能為了使用乙個特定型別的資料而建立乙個迭代器。作為指標,必須能夠使用*操作符類獲取資料。你還可以使用其他數學操作符如++。典型的,++操作符用來遞增迭代器,以訪問容器中的下乙個物件。如果迭代器到達了容器中的最後乙個元素的後面,則迭代器變成past-the-end值。使用乙個past-the-end值得指標來訪問物件是非法的,就好像使用null或為初始化的指標一樣。

C 標準模板庫(STL介紹) string

string str1 ab str2 xy string str str1 str2 比較規則是字典序 方法一 string str abcxyz str2 opq str.insert 3 str2 輸出 abcopqxyz 方法二 string str abcxyz str2 opq str....

STL 標準模板庫)

此篇只是乙個目錄,將分成單篇去完成 stl 主要有三個部分組成 容器,迭代器,演算法。順序容器 向量 vector 雙端佇列 dequeue 表 list ps copy 方法 關聯容器 集合 set 多重集合 multiset 對映 map 多重對映 multimap 容器介面卡 棧 stack ...

Stl(標準模板庫)

stl 標準模板庫 stl的目的是標準化元件,這樣就不用重新開發,可以使用現成的元件。我們常用到的stl容器有vector list deque map multimap set和multiset。1.簡單概括 如果需要高效的隨機訪問,不在乎插入和刪除的效率,使用vector 類似陣列 2 如果需要...