STL使用篇__順序容器

Enjoy_process發表於2019-03-04

                                                         順序容器

 

 

概述

STL中的順序容器包括向量(vector)、雙端佇列(deque)和列表(list),它們在邏輯上可看作一個長度可擴充套件的陣列,容器中的元素都是線性排列。可人為決定每個元素在容器中的位置,可以隨時向指定的位置插入新的元素和刪除已有的元素。

 

順序容器的共性

假設S表示容器的型別,s表示S型別的例項,用T表示S容器的元素型別,用t表示T型別的一個例項,用n表示一個整型資料,用p1和p2表示指向s中的元素的迭代器,用q1,q2表示任何一個指向T型別元素的輸入迭代器(未必指向S中的元素,也未必具有S::iterator型別),順序容器的基本功能如下所示:

1.建構函式
S s 使用預設建構函式,構造一個空容器
S s(n,t) 構造一個由n個t元素構成的容器例項s
S s(n) 構造一個有n個元素的容器例項s,每個元素都是T()
S s(q1,q2) 使用 [q1,q2) 區間內的資料作為s的元素構造s

 

可以使用賦值函式assign將指定的元素賦給順序容器,順序容器中原先的元素會被清除,賦值函式的3種形式是與建構函式一一對應的

2.賦值函式
s.assign(n,t) 賦值後的容器由n個t元素構成
s.assign(n) 賦值後的容器由n個值都為T()的元素構成
s.assign(q1,q2) 賦值後的容器的元素為 [q1,q2) 區間內的資料

 

向順序容器中可以一次插入一個或多個指定元素,也可以將一個迭代器區間所表示的序列插入,插入時需要通過一個指向當前容器元素的迭代器來指示插入位置。

3.元素的插入
s.insert(p1,t) 在s容器中p1所指向的位置插入一個新的元素t,插入後的元素夾在原p1和p1-1所指向的元素之間,該函式會返回一個迭代器指向新插入的元素
s.insert(p1,n,t) 在s容器中p1所指向的位置插入n個新的元素t,插入後的元素夾在原p1和p1-1所指向的元素之間,沒有返回值
s.insert(p1,q1,q2)

將 [q1,q2) 區間內的元素順序插入到s容器中p1位置處,新的元素夾在原p1和p1-1所指向的元素之間

 

4.元素的刪除
s1.erase(p1) 刪除s1容器中p1所指向的元素,返回被刪除元素的下一個元素的迭代器
s1.erase(p1,p2) 刪除s1容器中 [p1,p2) 區間內的元素,返回最後一個被刪除元素的下一個元素的迭代器(即在刪除前p2所指向元素的迭代器)

 

5.改變容器的大小
s1.resize(n) 將容器的大小變為n,如果原來的元素大於n,則容器末尾多餘的元素會被刪除,如果原來的元素小於n,則在容器末尾會用T()填充

 

6.首尾元素的相關操作(高效)
s.front() 獲得容器首元素的引用
s.back() 獲得容器尾元素的引用
s.push_back(t) 向容器尾部插入元素t
s.pop_back() 將容器尾部的元素刪除
s.push_front(t) 向容器頭部插入元素t    (向量除外)
s.pop_front() 將容器頭部的元素刪除  (向量除外)