STL vector用法及模板

2021-07-24 16:25:36 字數 3432 閱讀 5252

方便檢視:

stl標頭檔案中定義了vector(向量容器模板類),vector容器以連續陣列的方式儲存元素序列,可以將vector看作是以順序結構實現的線性表。當我們在程式中需要使用動態陣列時,vector將會是理想的選擇,vector可以在使用過程中動態地增長儲存空間。vector模板類需要兩個模板引數,第乙個引數是儲存元素的資料型別,第二個引數是儲存分配器的型別,其中第二個引數是可選的,如果不給出第二個引數,將使用預設的分配器。

下面給出幾個常用的定義vector向量物件的方法示例:

vectors;

定義乙個空的

vector物件,儲存的是

int型別的元素。

vectors(n);

定義乙個含有

n

int元素的

vector物件。

vectors(first, last);

定義乙個vector物件,並從由迭代器firstlast定義的序列[first,last)中複製初值。

vector的基本操作有:

s[i]

直接以下標方式訪問容器中的元素。

s.front()

返回首元素。

s.back()

返回尾元素。

s.push_back(x)

向表尾插入元素

x

s.size()

返回表長。

s.empty()

當表空時,返回真,否則返回假。

s.pop_back()

刪除表尾元素。

s.begin()

返回指向首元素的隨機訪問迭代器。

s.end()

返回指向尾元素的下乙個位置的隨機訪問迭代器。

s.insert(it, x)

向迭代器

it指向的元素前插入新元素

val

s.insert(it, n, x)

向迭代器it指向的元素前插入nx

s.insert(it, first, last)

將由迭代器firstlast所指定的序列[first, last)插入到迭代器it

指向的元素前面。

s.erase(it)

刪除由迭代器

it所指向的元素。

s.erase(first, last)

刪除由迭代器firstlast所指定的序列[first, last)

s.reserve(n)

預分配緩衝空間,使儲存空間至少可容納n個元素。

s.resize(n)

改變序列的長度,超出的元素將會被刪除,如果序列需要擴充套件(原空間小於n),

元素預設值將填滿擴充套件出的空間。

s.resize(n, val)

改變序列的長度,超出的元素將會被刪除,如果序列需要擴充套件(原空間小於n),

將用val填滿擴充套件出的空間。

s.clear()

刪除容器中的所有的元素。

s.swap(v)

s與另乙個vector物件v進行交換。

s.assign(first, last)

將序列替換成由迭代器firstlast所指定的序列[first, last)[first, last)不能是原序列中的一部分。

要注意的是,resize操作和clear操作都是對錶的有效元素進行的操作,但並不一定會改變緩衝空間的大小。

另外,vector還有其他一些操作如反轉、取反等,不再一下列舉。vector上還定義了序列之間的比較操作運算子(>, <, >=, <=, ==, !=),可以按照字典序比較兩個序列。還是來看一些示例**。輸入個數不定的一組整數,再將這組整數按倒序輸出,

如下所示:

#include #include using namespace std;

int main()

對給定序列排序

#include#includeusing namespace std;

int cmp(int a,int b){

return al;

int x;

while(cin>>x)l.push_back(x);

sort(l.begin(),l.end(),cmp);

for(int i=0;i

STL vector基本用法

vector的資料安排以及操作方式,與array非常相似。兩者的唯一區別在於空間的運用的靈活性。array是靜態空間,一旦配置了就不能改變。vector是動態空間,隨著元素的加入,它的內部機制會自行擴充空間以容納新元素。因此,vector的運用對於記憶體的合理利用與運用的靈活性有很大的幫助,我們再也...

STL vector基本用法

vector的資料安排以及操作方式,與array非常相似。兩者的唯一區別在於空間的運用的靈活性。array是靜態空間,一旦配置了就不能改變。vector是動態空間,隨著元素的加入,它的內部機制會自行擴充空間以容納新元素。因此,vector的運用對於記憶體的合理利用與運用的靈活性有很大的幫助,我們再也...

STL Vector容器用法

以類模板形式封裝的資料結構,用於儲存資料。標頭檔案 include vector是c 標準模板庫中的部分內容,它是乙個多功能的,能夠操作多種資料結構和演算法的模板類和函式庫。vector之所以被認為是乙個容器,是因為它能夠像容器一樣存放各種型別的物件,簡單地說,vector是乙個能夠存放任意型別的動...