C STL相關知識 學習筆記

2021-09-26 13:48:12 字數 2248 閱讀 8491

一、stl介紹

stl標準模板庫,由惠普實驗室提供,裡面整合了常用的資料結構類模板和演算法函式模板等。

容器:用來儲存各種型別資料的資料結構。

迭代器:類似於專門用來指向容器成員的指標,用來遍歷、操作、管理容器中的成員,可以大大提高容器的訪問速度。

演算法:stl實現了常見的排序、查詢演算法。

list:雙端鍊錶容器

iterator:用來指向容器中的元素

begin() 獲取指向第乙個元素的迭代器

end() 獲取指向最後乙個元素的下乙個位置

相關使用參考:

vector:向量容器,俗稱陣列

#include #include using namespace std;

void show(vector& arr)

show(arr);

vectorarr1(10,0);

// 支援比較運算子

cout << (arr[0]==arr1[0]) << endl;

// at成員函式,相當於操作

stack、queue:棧和佇列

double-ended queues:雙端佇列,用法與向量基本一致,但可以在頭和尾快速插入和刪除元素

#include #include using namespace std;

int main()

; sets;

// 在集合中插入元素

s.insert(arr,arr+5);

set::iterator it;

for(it=s.begin(); it!=s.end(); it++)

// 返回某個值元素的個數

cout << endl << s.count(2) <

map:是一種關聯容器,在其他程式語言中叫字典,c++中叫對映,以key/value鍵值對的方式進行儲存,key的值不能重複。

multimap:多重對映,它與map很像,區別是它的key的值可以重複。

priority_queue:優先佇列,它會根據元素的比較結果進行排序。

#include #include #include #include using namespace std;

int com(int& a,int& b)

int main()

cout << pq.size() << endl;

while(!pq.empty())

}

總結:

1、vector和deque是支援運算,因此基本不需要迭代器,其他容器一律使用迭代器進行遍歷。

2、stack、queue、priority_queue容器沒有迭代器。

3、set、multiset、priority_queue會對元素進行排序,因它儲存元素要支援比較運算子。

C STL 學習筆記

一 stl a include include using namespace std 1 void sort iterator start,iterator end void sort iterator start,iterator end,strictweakordering cmp cmp 函...

C STL學習筆記

remove if使用方法 int a vectorarr a,a 14 std remove if arr.begin arr.end std bind2nd std less 100 for int i 0 i arr.size i 輸出結果為 240 100200 300102 555100 ...

C STL學習筆記

stl是個寶 由於c stl的開放,代替了那些需要老老實實寫結構體來實現堆疊二叉樹等資料結構的c等語言,很多演算法不需要自己來實現了 所有容器都有的兩個時間複雜度為o 1 的方法 a.size 返回容器中元素的個數 a.empty 返回容器是否為空 vector也叫變長陣列,即陣列長度可以動態變化。...