STL順序容器vector,list和deque

2021-07-31 09:29:49 字數 1900 閱讀 6957

順序容器是通過將指定型別的元素按照位置順序進行儲存和訪問的一種容器型別.

stl標準庫中的順序容器有三種:vector, list, 和deque(double ended queue雙端佇列,讀[dɛk])

三個容器對應的標頭檔案:

#include 

#include

#include

一,容器的通用建構函式, 假設容器型別為vector, 儲存的元素型別為int則有:

vector

vec;//預設構造

vector

vec(vec1);//同容器型別物件初始化

vector

vec(vec1.b, vec1.e);//迭代器範圍b到e之間相同或可隱式轉換的元素初始化

順序容器專有建構函式:

vector

vec(n, v);//n個值為v的元素初始化

vector

vec(n);//n個值初始化,如果儲存元素型別是類則呼叫其建構函式

二, 支援常規的算術運算子, 其中vector和deque由於連續儲存, 所以和指向陣列的指標一樣支援一些特殊的算術運算:

it + n

it - n

it1 += it2

it1 -= it2

it1 - it2

以及》, >=, <, <=

三, 容器使用自己容器型別定義的型別

比如vector型別的容器:

vector

::iterator

vector

::const_iterator

vector

::size_type

vector

::reverse_iterator

vector

::difference_type

vector

::value_type //容器儲存的元素型別

vector

::reference//容器元素的引用型別

const_reference//const引用型別

四, 順序容器新增元素的函式

c.push_back(v)

c.push_front(v)

下面3個函式不適用與vector,vector沒有insert函式:

c.insert(it, v)//在it前插入v,即使it是end()也同樣滿足,因為是從前面插入,返回新新增元素的迭代器

c.insert(it, n, v)//在it前插入n個v值的元素, 返回void

c.insert(it, b, e)//在it前插入某物件迭代器b到e之間的元素, 返回void

五, 元素訪問方式

vector

::reference first = *vec.begin();

vector

::reference first = vec.front();//第乙個元素的引用

vector

::reference last = *--vec.end();//最後乙個迭代器的前面一位

vector

::reference last = vec.back();//最後乙個元素的引用

如果是vector和deque型別的容器也可以使用下標vec[n]或者vec.at(n)的方式索引元素,在使用這四種方式訪問元素之前都必須先確認元素確實存在!

六, 元素的刪除操作

c.erase(it)

c.erase(b, e)

c.clear()

c.pop_back()

c.pop_front //vector不可以從前端刪除,影響效率

stl容器之順序容器

stl容器分為順序容器和關聯容器 其中順序容器最常用的由vector,list,queue 1.vector vector 向量容器,可以看作變長陣列,長度可根據需要自行變化。使用的標頭檔案 include 定義方式 vector陣列名 vectorar 訪問容器內資料的方式和普通陣列相同,可以用a...

STL學習 順序容器

我以 vector 為例,總結一下 stl順序容器的基本使用。vector 是順序容器,它在很多方面類似於我們通常使用的陣列。但是它比陣列具有很多很好的特性。它使用安全,具有陣列所不具備的自增長的特性,使得 vector 在現代軟體設計中佔據重要地位。本講分五個部分,分別是初始化 迭代器 容器訪問 ...

STL順序容器 vector

vector是乙個線性順序結構。相當於陣列,但其大小可以不預先指定,並且自動擴 展。它可以像陣列一樣被操作,由於它的特性我們完全可以將vector 看作動態數 組。在建立乙個vector 後,它會自動在記憶體中分配一塊連續的記憶體空間進行資料 儲存,初始的空間大小可以預先指定也可以由vector 預...