C 標準庫中vector容器的使用

2021-06-28 09:56:14 字數 2605 閱讀 2728

標準stl序列容器:vector、string、deque和list。

標準stl關聯容器:set、multiset、map和multimap。

非標準序列容器slist和rope。slist是乙個單向鍊錶,rope本質上是一「重型」string。

非標準的關聯容器hash_set、hase_multiset、hash_map和hash_multimap。

容器是具有大小可變的儲存空間,這在雷達系統**中非常重要,例如我們需要記錄目標航跡,但是我們事先並不知道航跡中共有多少個點,使用容器就能夠大大減輕我們程式設計的負擔,不需要去用一些固定的變數來對不定的個數進行緩衝。容器有以下一些注意事項:

呼叫empty而不是檢查size()是否為0。

理由很簡單:empty對所有的標準容器都是常數時間操作,而對一些list的實現,size耗費線性時間。

使用每一種容器都要包含其相應的標頭檔案,以最簡單,最常用的vector容器來說,vector是c++標準模板庫中的部分內容,它是乙個多功能的,能夠操作多種資料結構和演算法的模板類和函式庫。vector之所以被認為是乙個容器,是因為它能夠像容器一樣存放各種型別的物件,簡單地說vector是乙個能夠存放任意型別的動態陣列,能夠增加和壓縮資料。為了可以使用vector,必須在你的標頭檔案中包含下面的**:

#include

vector屬於std命名域的,因此需要通過命名限定,如下完成你的**:

using std::vector;     vectorv;

或者連在一起,使用全名:

std::vectorv;

建議使用全域性的命名域方式:

using namespace std;

1.vector的宣告

vectorc;   建立乙個空的vector

vectorc1(c2); 建立乙個vector c1,並用c2去初始化c1

vectorc(n) ; 建立乙個含有n個elemtype型別資料的vector;

vectorc(n,elem); 建立乙個含有n個elemtype型別資料的vector,並全部初始化為elem;

c.~vector(); 銷毀所有資料,釋放資源;

2.vector容器中常用的函式。(c為乙個容器物件)

c.push_back(elem);   在容器最後位置新增乙個元素elem

c.pop_back();            刪除容器最後位置處的元素

c.at(index);                返回指定index位置處的元素

c.begin();                   返回指向容器最開始位置資料的指標

c.end();                      返回指向容器最後乙個資料單元的指標+1

c.front();                     返回容器最開始單元資料的引用

c.back();                     返回容器最後乙個資料的引用

c.max_size();              返回容器的最大容量

c.size();                      返回當前容器中實際存放元素的個數

c.capacity();               同c.size()

c.resize();                   重新設定vector的容量

c.reserve();                同c.resize()

c.erase(p);               刪除指標p指向位置的資料,返回下指向下乙個資料位置的指標(迭代器)

c.erase(begin,end)     刪除begin,end區間的資料,返回指向下乙個資料位置的指標(迭代器)

c.clear();                    清除所有資料

c.rbegin();                  將vector反轉後的開始指標返回(其實就是原來的end-1)

c.rend();                     將vector反轉後的結束指標返回(其實就是原來的begin-1)

c.empty();                   判斷容器是否為空,若為空返回true,否則返回false

c1.swap(c2);               交換兩個容器中的資料

c.insert(p,elem);          在指標p指向的位置插入資料elem,返回指向elem位置的指標      

c.insert(p,n,elem);      在位置p插入n個elem資料,無返回值

c.insert(p,begin,end) 在位置p插入在區間[begin,end)的資料,無返回值

3.vector中的操作

operator 如: c.[i];

同at()函式的作用相同,即取容器中的資料。

在使用容器時,有時候我們還需要清空容器,這樣清空既可以清空容器內的變數,也可以清空容器占用的空間,此時的**為:

vector

().swap

(redradarparaoutvector);

<>內為容器的型別,swap()內為容器的名稱。

c 標準容器基礎《vector》

vector實際上是array的加強版,vector具有許多實用的內建函式,總體比array方便許多,與普通陣列相比最大的特點在於其動態地開闢儲存空間,而非像陣列一樣使用前先提前開闢固定大小的記憶體空間,對於需要從鍵盤輸入開闢大小的數值時極為方便。vector與array的簡單對比 include ...

c STL標準模板庫 vector容器

vector是stl標準模板庫中的乙個容器,可以容納不同的資料型別,並且資料可以自動向前增長,因此稱之為向量,vector是乙個序列式容器,裡面的底層實現是乙個順序表結構 1.資料自動初始化為0 2.可以動態增長長度 相比與陣列強大太多,可以用vector取代陣列 3.支援隨機訪問資料 4.對記憶體...

STL標準函式庫 vector容器

1.vector的功能 vector包含著一系列連續儲存的元素,性質和陣列十分相似。訪問元素或者在末尾插入元素常數級別,插入元素是線性級別。要注意的是,vector的尾部元素是 vector ve vector iterator iter iter ve.end 1 這裡一定要減 cout ite ...