演算法筆記學習記錄(2) STL

2021-09-10 15:44:30 字數 2630 閱讀 2806

c++標準模板庫(stl)

(1)vector–變長陣列

定義:vector name vectorname

訪問:1.像普通陣列一樣通過下標訪問 2.通過迭代器訪問,迭代器iterator可以理解為一種類似指標的東西,定義:vector::iterator it, 可以通過*it來訪問vector裡的元素。

vector常用函式:

1.push_back(x) :在vector後面新增乙個元素x

2.pop_back():用於刪除vector的尾元素

3.size():用來獲取vector中元素的個數

4.clear():用來清空vector中的所有元素

5.insert(it,x):用來向任意迭代器it處插入乙個元素x

6.erase(it):刪除迭代器為it處的元素。 erase(first,last)刪除【first,last)內的所有元素。這裡要注意:外國人的思想中一般是左閉右開。

(2)set–乙個內部自動有序且不含重複元素的集合

定義:set name

訪問:set只能通過迭代器訪問,除了vector和string外的stl容器都不支援*(it+i)的訪問方式。

insert常用函式:

1.insert(x):將x插入到set中,並自動遞增排序和去重。

2.find(value):返回set中對應值為value的迭代器。

3.erase(it),刪除迭代器為it處的元素。 erase(value)刪除值。 erase(first,last)刪除【first,last)內的所有元素。

4.size():用來獲取set中元素的個數

5.clear():用來清空set中的所有元素

(3)string–字串

string初始化可直接賦值:

string str = 「abcd」

訪問:1.可以像字元陣列那樣去訪問。如果要讀入或輸出整個字串,只能使用cin和cout。 2.通過迭代器訪問:string::iterator it。

string常用函式:

1.str1+=str2:將兩個string直接拼起來

2.直接用符號比大小,規則是字典序

3.length()/size():字串長度

4.insert(pos,string):在pos位置插入string。 insert(it,it2,it3):it為原字串欲插入位置,it2,it3為待插入字串的首尾迭代器。

5.erase(it):刪除迭代器為it處的元素。 erase(first,last)刪除【first,last)內的所有元素。

6.clear():用來清空string中的所有元素

7.substr(pos,len):返回從pos號位開始,長度為len的字串。

8.string::npos為find函式失配時返回的值

9.find(str2):當str2是str的字串時,返回在str中第一次出現的位置。如果不是,返回string::npos

10.replace(pos,len,str2):把str從pos號位開始,長度為len的字串替換為str2

(4)map–將任何基本型別對映到任何基本型別

定義:mapmp;

訪問:1.通過下標訪問 2.通過迭代器訪問:map::iterator it. 使用it->first訪問鍵,it->second來訪問值

注意:map會以鍵從小到大的順序自動排序

map常用函式:

1.find(key):返回鍵為key的對映的迭代器

2.erase(it) erase(key):key為欲刪除的對映的鍵 erase(first,last)

3.size():用來獲取map中元素的個數

4.clear():用來清空map中的所有元素

(5)queue–佇列,乙個先進先出的容器

定義:queue name

訪問:佇列是乙個先進先出的容器,所以只能通過front()來訪問隊首元素,或是通過back()來訪問隊尾元素

queue常用函式:

1.push(x):將x進行入隊

2.front(),back()

3.pop():令隊首元素出隊

4.empty():檢測是否為空,為空返回true

5.size():返回queue內的元素

(6)priority_queue–優先佇列,隊首元素一定是當前佇列中優先順序最高的元素。

(7)stack–後進先出的容器

定義:stack name

訪問:只可使用top()函式訪問棧頂

stack常用函式:

1.push(x)

2.top()

3.pop()

4.empty()

5.size()

(8)algorithm標頭檔案下的常用函式

1.max(),min(),abs()

2.swap()

3.reverse(it,it2):將陣列指標在[it,it2)之間的元素進行反轉

4.sort()

5.cmp()函式:

bool cmp(int a, int b)

6.lower_bound(first, last, val):返回第乙個值大於等於val的位置

upper_bound(first, last, val):第乙個值大於val元素的位置

C 提高程式設計(2) STL初識

stl大體分為六大元件,分別是 容器 演算法 迭代器 仿函式 介面卡 配接器 空間配置器 容器 各種資料結構,如vector list deque set map等,用來存放資料。演算法 各種常用的演算法,如sort find copy for each等 迭代器 扮演了容器與演算法之間的膠合劑。仿...

C 提高程式設計 2 STL初識

2.1 stl的誕生 長久以來,軟體界一直希望建立一種可重複利用的東西 c 的物件導向和泛型程式設計思想,目的就是提公升 的復用性。大多數情況下,資料結構和演算法都未能有一套標準,導致被迫從事大量重複的工作,為建立一套資料結構和演算法的標準,誕生了stl 2.2 stl基本概念 stl standa...

c 主項練習錯題分析 2 STL容器

下面哪幾種是 stl 容器型別 vector setmultivector multiset array 正確答案 a b d e c 11 stl中的容器 一 順序容器 vector 可變大小陣列 deque 雙端佇列 list 雙向鍊錶 forward list 單向鍊錶 array 固定大小陣...