演算法入門基礎 STL基本介紹

2021-10-19 07:23:01 字數 1780 閱讀 2327

stl(standard template library),即標準模板庫,是乙個具有工業強度的,高效的c++程式庫。它被容納於c++標準程式庫(c++ standard library)中,是ansi/iso c++標準中最新的也是極具革命性的一部分。該庫包含了諸多在電腦科學領域裡所常用的基本資料結構和基本演算法。為廣大c++程式設計師們提供了乙個可擴充套件的應用框架,高度體現了軟體的可復用性。

stl的乙個重要特點是資料結構和演算法的分離。儘管這是個簡單的概念,但這種分離確實使得stl變得非常通用。例如,由於stl的sort()函式是完全通用的,你可以用它來操作幾乎任何資料集合,包括鍊錶,容器和陣列;

stl中六大元件:

1)容器(container),是一種資料結構,如list,vector,和deques ,以模板類的方法提供。為了訪問容器中的資料,可以使用由容器類輸出的迭代器;

2)迭代器(iterator),提供了訪問容器中物件的方法。例如,可以使用一對迭代器指定list或vector中的一定範圍的物件。迭代器就如同乙個指標。事實上,c++的指標也是一種迭代器。但是,迭代器也可以是那些定義了operator*()以及其他類似於指標的操作符地方法的類物件;

3)演算法(algorithm),是用來操作容器中的資料的模板函式。例如,stl用sort()來對乙個vector中的資料進行排序,用find()來搜尋乙個list中的物件,函式本身與他們操作的資料的結構和型別無關,因此他們可以在從簡單陣列到高度複雜容器的任何資料結構上使用;

4)仿函式(function object)

5)迭代介面卡(adaptor)

6)空間配製器(allocator)

vector 將其元素置於乙個動態陣列中加以管理,與 array 非常類似,兩者的唯一差別在於空間運用的靈活性,array 是靜態空間,一旦配置了就不能更改,當需要容納更多的元素時(此時已越界),需要重新手動配置更大的 array 空間,然後重新置入資料。而 vector 是動態空間,在同樣的情況下,隨著元素的加入,它的內部機制會自行擴充空間以容納新元素。vector 同 array 一樣可以很方便的通過索引值直接訪問任何乙個元素,在陣列的尾端追加或移除元素均非常快速(當追加元素超出原有分配空間時,vector需要重新分配空間),但在其中間或頭部插入移除元素就比較費時,需要移動安插點之後的所有元素以保持原來的相對位置。

//1.定義和初始化

vectorvec1; //預設初始化,vec1為空

vectorvec2(vec1); //使用vec1初始化vec2

vectorvec3(vec1.begin(),vec1.end());//使用vec1初始化vec2

vectorvec4(10); //10個值為的元素

vectorvec5(10,4); //10個值為的元素

//2.常用操作方法

vec1.push_back(100); //新增元素

int size = vec1.size(); //元素個數

bool isempty = vec1.empty(); //判斷是否為空

cout<=、<=...

vector::iterator iter = vec1.begin(); //獲取迭代器首位址

vec1.clear(); //清空元素

//3.遍歷

//下標法

int length = vec1.size();

for(int i=0;i::const_iterator iterator = vec1.begin();

for(;iterator != vec1.end();iterator++)

STL基本演算法

equal 判斷兩個區間是否相等 fill 改填元素值 fill n 改填元素值,n次 iter swap 元素互換 lexigicographical compare 以字典順序進行比較 max 最大值 min 最小值 mismatch 找出不匹配點 swap 交換元素 set union 並集 ...

STL 基本演算法

該函式用於判斷兩個指定區間內的資料是否相等,若第二個區間較長,則多處部分不予考慮,因此,若要保證兩個序列相等則應先判斷其元素個數是否相同。其實現較簡單,沒有過多好說的。fill函式使用指定值填充目標區間,其填充過程是通過呼叫賦值運算子來進行的,fill n與fill類似,只是其填充的是區間的前n個元...

基礎演算法 STL容器

把自己寫 時一些經常要用到的容器做個總結,以便自己複習。引用標頭檔案 c 11 include插入 hash a 1 判斷key是否存在 hash.count a 0或hash,find a hash.end 遍歷 for auto item hash clear 刪除set容器中所用的元素。emp...