C 標準模板庫(一)

2021-08-19 17:44:09 字數 4791 閱讀 6009

之前學習自定義模板時覺得自定義模板比較抽象,使用起來較為繁瑣。作為c++標準庫相當重要的一部分,

stl庫提供一系列元件操作。為我們解決了這個問題。

標準模板庫stl包括容器、迭代器、演算法;

容器指包含資料的資料結構,容器中包含的物件是元素;

迭代器指用來訪問容器中的元素物件,相當於元素物件的指標;

演算法指一些能在各種容器中通用的標準演算法,如排序、插入等;

演算法使用迭代器在容器上進行操作。

stl常見容器:

序列式容器:

序列式容器在stl中主要包含常見的三種:向量vector、鍊錶list和雙端佇列deque。

向量vector為一種順序儲存同型別元素的資料結構。它是一種陣列方式的思路實現,並且可以隨機訪問的序列。

鍊錶list是一種實現雙向鍊錶資料結構的容器。它只支援順序訪問序列中的元素。該容器在刪除、插入相應元素時,效率較高。另外,list可以與vector一樣在需要時動態改變其大小。

雙端佇列deque是類似向量的一種佇列結構。它允許在該佇列的頭部和尾部插入並且刪除相應的元素。同時,它也支援針對其元素的順序以及隨機訪問。

向量vector介面方法說明

介面方法名稱

基本功能說明

vectorobject.assign(start,end)

將迭代器start與end之間的資料元素賦值給vectorobject

vectorobject.assign(n, elem)

將n個elem元素賦給其呼叫的vectorobject

vectorobject.at(index)

返回向量vectorobject中指定索引index所指的資料元素

vectorobject.back()

返回向量vectorobject中最後乙個資料元素

vectorobject.begin()

返回指向向量vectorobject中第乙個元素的迭代器

vectorobject.capacity()

返回向量vectorobject中元素的個數

vectorobject.clear()

清空向量vectorobject中的資料元素

vectorobject.empty()

判斷向量vectorobject是否為空,為空則返回true值

vectorobject.end()

返回指向向量vectorobject最後乙個資料元素的迭代器

vectorobject.erase(loc)

刪除當前向量loc位置資料元素,返回下乙個資料元素位置

vectorobject.erase(start,end)

刪除從start到end區間的元素,包含start不包含end,並返回下乙個資料元素位置

vectorobject.front()

返回向量中第乙個資料元素

vectorobject.insert(pos,elem)

當前向量中pos位置插入元素elem,並返回新資料的位置

vectorobject.insert(pos,n,elem)

當前向量中pos位置插入n個elem資料元素,不返回任何值

vectorobject.insert(pos,start,end)

當前向量中pos位置處插入區間在start到end之間的資料元素,包含start但不包含end,無任何返回值

vectorobject.max_size()

返回當前向量中最大資料量,即向量的最大長度

vectorobject.pop_back()

刪除當前向量最後乙個資料元素

vectorobject.push_back(elem)

當前向量尾部新增乙個資料元素

vectorobject.rbegin()

返回乙個逆向佇列的第乙個資料元素

vectorobject.rend()

返回乙個逆向佇列的最後乙個資料元素

vectorobject.reserve()

設定當前向量合適的最小容量

vectorobject.resize(num)

重新設定當前向量的長度

vectorobject.size()

返回當前容器中實際資料元素個數

v1.swap(v2)

呼喚向量v1與v2的資料元素

operator

過載下標操作符,用於訪問指定向量中的元素

雙端佇列deuqe公開方法介面說明

介面方法名稱

基本功能說明

d.assign(n,elem)

n個elem元素取代當前佇列容器中元素

d.assign(first,end)

迭代器first到end區間的元素取代當前佇列中元素

d.at(n)

訪問當前佇列n位置處的元素,並返回該元素

d.back()

返回當前佇列尾部元素

d.begin()

返回當前佇列第乙個元素的迭代器

d.clear()

清空當前佇列中所有元素

d.empty()

判斷當前佇列是否為空,如果為空則返回true

d.end()

返回當前佇列中最後乙個元素的迭代器

d.erase(first,end)

刪除當前佇列迭代器first到end所指區間的元資料

d.erase(iter)

刪除當前佇列迭代器iter所指位置元素

d.front()

返回當前佇列起始位置元素

d.insert(iter,elem)

當前佇列迭代器iter位置處插入元素elem

d.insert(iter,first,end)

將迭代器first到end區間的元素插入到當前佇列iter所指位置

d.insert(iter,num,elem)

將num個elem元素插入到當前佇列iter所指位置處

d.max_size()

返回當前佇列容器當前最大容量

d.pop_back()

刪除當前佇列中最後乙個元素

d.pop_front()

刪除當前佇列中第乙個元素

d.push_back(elem)

當前佇列的尾部新增元素elem

d.push_front(elem)

當前佇列的頭部新增元素elem

d.rbegin()

返回當前佇列反向的指向首元素的迭代器

d.resize(num,elem)

將當前佇列大小調整為num,並且使用元素elem初始化容器

d.size()

返回當前佇列的元素個數

d.swap(deque)

交換當前佇列與deque佇列的內容

list容器公開介面方法說明

介面方法名稱

基本功能說明

assign(n,value)

用n個元素值value替換當前鍊錶中元素

assign(firstiter,enditer)

用迭代器firstiter到enditer區間內的元素替換鍊錶中元素

back()

返回當前鍊錶最後乙個元素的引用

begin()

返回指向當前鍊錶首個元素的迭代器

clear()

清空當前鍊錶中所有元素

empty()

判斷當前鍊錶中元素是否為空,為空則返回true

end()

返回指向當前鍊錶最後乙個元素的迭代器

erase(iter)

刪除當前鍊錶中指示器iter指向的元素

erase(firstiter,enditer)

刪除當前鍊錶迭代器firstiter到enditer區間內的元素

front()

返回當前鍊錶第乙個元素的引用

insert(iter,value)

當前鍊錶中迭代器iter所指位置插入元素value

insert(iter,num,value)

當前鍊錶中迭代器iter所指位置插入num個元素value

insert(iter,firstiter,enditer)

當前鍊錶中迭代器iter所指位置插入區間firstiter到enditer之間的元素

max_size()

返回當前鍊錶最大容量,即當前鍊錶可存放元素最大個數

pop_back()

刪除當前鍊錶中最後元素

pop_front()

刪除當前鍊錶中首元素

push_back(value)

當前鍊錶尾部新增元素value

push_front(value)

當前鍊錶首部新增元素value

rbegin()

返回當前鍊錶反向的首元素迭代器

remove(value)

刪除當前鍊錶中所有值為value的元素

remove_if()

刪除容器指定元素

rend()

放回指向當前反向鍊錶最後乙個元素的指示器

resize(num,value)

調整當前鍊錶,使得當前鍊錶為num個元素,並且將元素初始化為value值

reverse()

反調當前鍊錶中元素的順序

size()

返回當前鍊錶中元素個數

sort()

根據預設排序方式,對當前的鍊錶中元素排序

sort(method)

根據當前給定的模式,對當前鍊錶中元素排序

swap(listvalue)

當前鍊錶與listvalue鍊錶內部元素互換

unique()

刪除當前鍊錶中重複元素

C 標準模板庫

map是stl的乙個關聯容器,它提供一對一 其中第乙個可以稱為關鍵字,每個關鍵字只能在map中出現一次,第二個可能稱為該關鍵字的值 的資料處理能力。資料的插入 includemapstudent strdent.insert pair 1,xiaoming strdent.insert pair 2...

C 標準模板庫分析之一

一 標準模板庫 二 容器類 順序容器 關聯容器 容器介面卡 三 順序容器 vector 向量 類似於陣列,其定義在標頭檔案,可通過下標運算子 訪問。list 列表 類似於雙向鍊錶,其定義在標頭檔案,不能隨機訪問,支援的迭代器型別為雙向迭代器子。deque 雙端佇列 由雙端佇列組成,定義在中,可通過下...

C 命名空間,標準庫,標準模板庫

全域性空間與命名空間 我們在使用c 時,匯入標頭檔案一般有兩種形式,帶 h 和不帶 h 一般來說,不帶 h 的是c 的標準標頭檔案,帶的是c語言的,h 裡面定義的所有類以及物件都是在全域性空間裡,不帶的是在命名空間std裡面。c 要相容c的標準庫,而c的標準庫里碰巧也已經有乙個名字叫做 string...