0039C 標準庫中的vector的常用操作函式

2021-07-11 08:03:00 字數 2876 閱讀 5390

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

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

using std::vector; vector v;

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

std::vector v;

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

using namespace std;

1.vector的宣告

vector c; 建立乙個空的vector

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

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

vector c(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物件最重要的幾種操作

vector v;

1. v.push_back(t) 在容器的最後新增乙個值為t的資料,容器的size變大。

另外list有push_front()函式,在前端插入,後面的元素下標依次增大。

v.size() 返回容器中資料的個數,size返回相應vector類定義的size_type的值。v.resize(2*v.size)或v.resize(2*v.size, 99) 將v的容量翻倍(並把新元素的值初始化為99)

v.empty() 判斷vector是否為空

v[n] 返回v中位置為n的元素

v.insert(pointer,number, content) 向v中pointer指向的位置插入number個content的內容。

還有v. insert(pointer, content),v.insert(pointer,a[2],a[4])將a[2]到a[4]三個元素插入。

v.pop_back() 刪除容器的末元素,並不返回該元素。

7.v.erase(pointer1,pointer2) 刪除pointer1到pointer2中間(包括pointer1所指)的元素。

vector中刪除乙個元素後,此位置以後的元素都需要往前移動乙個位置,雖然當前迭代器位置沒有自動加1,但是由於後續元素的順次前移,也就相當於迭代器的自動指向下乙個位置一樣。

v1==v2 判斷v1與v2是否相等。

!=、<、<=、>、>= 保持這些操作符慣有含義。

vector::iterator p=v1.begin( ); p初始值指向v1的第乙個元素。*p取所指向元素的值。對於const vector只能用

vector::const_iterator型別的指標訪問。

p=v1.end( ); p指向v1的最後乙個元素的下一位置。

12.v.clear() 刪除容器中的所有元素。

C 中的標準庫與非標準庫的區別

c 中我們要用到標準輸出,就需要呼叫cout,那麼,cout這條語句怎麼使用呢?例如 include 標頭檔案 int main std cout hello world include int main cout hello world 從這兩個函式來看都沒多大的區別,最後都是輸出 hello w...

C 標準庫中的時間函式

c 語言中的標頭檔案,也就是c語言的中提供時間函式。其中主要是3中資料結構 time t,clock t和struct tm。其實time t和clock t都是乙個整形數,time t記錄的是秒數,而在windows下,clock t儲存的是毫秒數。一 獲取時間 1 clock t clock v...

C 標準類庫中的list

lists將元素按順序儲存在鍊錶中.與 向量 vectors 相比,它允許快速的插入和刪除,但是隨機訪問卻比較慢.stl中 end 指向的總是無效值,取值都用迭代器,用法跟指標差不多。assign 給list賦值 back 返回最後乙個元素 begin 返回指向第乙個元素的迭代器 clear 刪除所...