STL四種容器簡單用法

2021-10-08 12:16:17 字數 4270 閱讀 9448

protected:

iterator start;

//表示目前使用空間的頭

iterator finish;

//表示目前使用空間的尾

iterator end_of_storage;

//表示目前可用空間的尾

(注意這幾個資料成員在外部不可以使用,他們是protected , 所以只能通過函式得到他們)

public:

iterator 						//vector 的迭代器(是普通指標)
vector的重要成員函式

public:

iterator begin()

;//返回start

iterator end()

;//返回 end

reference front()

;//返回首元素的引用

reference back()

;//返回尾元素的引用

size_type size()

;//返回使用空間的大小

size_type capacity()

;//返回容量的大小

void push_back

(const t& x)

;//將元素插入到最尾端

(注意當用push_back 向vector 尾部加元素的時候,如果當前的空間不足,vector 會重新申請空間,這次申請的空間是原來的空間大小的1.5倍,也就是新的可用空間將增加為原來的1.5倍)

void pop_back(); //將最尾端的元素取出

(注意當用pop_back 刪除尾部的元素時,vector 的capacity 是不會變化的)

iterator erase(iterator position) //清除某位置上的元素,vector的使用空間會減少

void insert(插入的位置,插入的數值) //在某個位置才插入多少個元素,vector 的使用空間會增加

void clear() //清除所有元素,vector 的使用空間減為零,可用空間不變

注:iterator find(起始位置,結束位置, 查詢的元素值) //找到指定的值的位置
他不是vector 的成員而是乙個c++ 提供的函式

一.理論:

stl list 是乙個雙向鍊錶,迭代器具備前移和後移的能力。list 有乙個重要的性質:插入操作和結合操作會造成原有的迭代器失效。應用時應該用

二.實際應用:

1.以下操作同vector

list<

int> list;

ilist.

push_back(0

);ilist.

begin()

;ilist.

end();

ilist.

insert()

;ilist.

erase()

;ilist.

clear()

;

2.以下為list 的特有操作

(1)void push_front

(const t &x)

;//插入乙個結點,作為頭結點

(2)void push_back

(const t &x)

;//插入乙個結點,作為尾結點

(3)void pop_front()

;//移除頭結點

(4)void pop_back()

;//移除尾結點

(5)void remove

(const t&value)

;//將數值為value的所有元素移除

(6)void unique()

;//將「連續而相同的元素」移除只剩乙個

(7)void splice

(iterator position, list &x)

;//將x 結合於position所指位置之前。x 必須不同於*this

(8)void splice

(iterator position, list&

, iterator i)

;//將i所指的元素結合於position所指位置之前。position 和 i 可指向同乙個list

(9)void splice

(iterator position, list&

, iterator first, iterator lsat)

;//將[first, last)內的所有元素結合於 position 所指的位置之前,position和[first, last)可指向同乙個list,但是position 不能位於[first, last)之內。

(10)void

merge

(list& x)

;//將x合併到*this 身上。兩個lists 的內容都必須先經過遞增排序。

(11)void

reverse()

;//將*this 的內容逆向重置

(12)void

sort()

;//將list 的元素進行公升序排序

一.理論:

1.deque 是一種雙向開口的連續性空間。可以在頭尾兩端分別做元素的插入和刪除操作。vector 從技術觀點也可以在頭尾兩端進行插入和刪除操作,但是其頭部操作的效率很低。

2.deque 沒有容量的觀念。它是動態以分段連續空間組合而成,隨時可以增加一塊更大的空間,然後複製元素。

3.deque 的迭代器不是普通的指標,其複雜度比vector 複雜的多。除非必要,我們應該盡量選擇使用vector 而非 deque。

4.deque 由一段一段的定量連續空間構成。一旦有必要在deque 的前端和尾端增加新空間,便配置一段定量連續空間,串接在整個deque 的頭端或尾端。

5.可以使用下標的操作

6.應用時應該加

二. 實際應用:

1.deque 的其他操作基本同vector

(1)

push_back()

;(2)

push_front()

;(3)

pop_back()

;(4)

pop_front()

;(5)

clear()

;(6)

erase()

;(7)

insert()

;(8)

resize()

;//重新設定deque的長度大小

一.理論:

1.map 的特性是,所有元素都會根據元素的鍵值自動被排序,map的所有元素都是pair,同時擁有實值(value)和鍵值(key)。pair的第一元素被視為鍵值,第二元素被視為實值。map 不允許兩個元素擁有相同的鍵值。

2.map 的鍵值關係到map的元素的排列規則,任意改變map元素鍵值將嚴重破壞map的組織。所以不可以通過map 的迭代器來改變map 的鍵值。但是可以通過迭代器來修改元素的實值。

二.實際應用

1.使用map 時首先包括標頭檔案: #include

2.使用時應該加上巨集:#pragma warning (disable:4786) 來去除警告

3.建構函式:

mapint> simap;

//第乙個引數是鍵值、第二個引數是實值

4. iterator find

(鍵值)

;//它是map 的成員函式,用來找指定鍵值map的迭代器

5.pairint>

pairtemp

(string

(「a」),5

);//pair的建構函式

6.iterator insert

(iterator position, pairtemp)

;//將pairtemp 插入到map 中

7.void

erase

(iterator position)

;//刪除指定位置上的 map 元素

8.size_type count

(鍵值)

;//判斷該鍵值的map 元素是否存在

9.size_type size()

;//返回map 中的元素的個數

10.iterator lower_bound

(鍵值)

;//返回該鍵值或者大於該鍵值的map 的迭代器

11.iterator upper_bound的(鍵值)

;//返回大於該鍵值的map 的迭代器

STL容器的簡單用法總結

set 屬性 不允許元素重複,元素字典序排列,不提供下標操作符 宣告 seta 插入 a.insert b 遍歷 set iterator a it 迭代器是靜態的 for a it a.begin a it a.end a it cout a it 判斷是否是空 a.empty 元素個數 a.si...

python3 函式的引數的四種簡單用法

1.預設引數 2.關鍵字引數 3.非固定引數 4.區域性變數 預設引數 def student name,age,address print name,age,address 關鍵字引數 關鍵引數必須放在預設引數之後 def student2 name,age,address,男 print nam...

map容器的簡單用法

map是按關鍵字順序來儲存資料 因此關鍵字不能重複 不能直接修改 map 容器中的關鍵字。因為 map 中的元素是按照關鍵字排序的,新增元素方法有insert make pair t1,t2 和 insert函式返回型別為pair迭代器指向插入的建值的位置 成功bool為true 失敗為false ...