STL---vector(向量)

weixin_30924079發表於2020-04-04

1 基本操作

(1)標頭檔案#include<vector>.

(2)建立vector物件,vector<int> vec;

(3)尾部插入數字:vec.push_back(a);

(4)使用下標訪問元素,cout<<vec[0]<<endl;記住下標是從0開始的。

(5)使用迭代器訪問元素.

vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
    cout<<*it<<endl;

(6)插入元素:    vec.insert(vec.begin()+i,a);在第i+1個元素前面插入a;

(7)刪除元素:    vec.erase(vec.begin()+2);刪除第3個元素

        vec.erase(vec.begin()+i,vec.end()+j);刪除區間[i,j-1];區間從0開始

(8)向量大小:vec.size();

(9)清空:vec.clear();

vector中的元素可以使任意型別的T,必須具備可設定可複製兩個屬性,包括int、double、string以及結構體或其他自定義的型別。但是要注意:結構體要定義為全域性的,否則會出錯

 

2、其它成員函式

vec.assign(beg,end)      vec.assign(n,elem)
  將[beg; end)區間中的資料賦值給vec。將n個elem的拷貝賦值給vec。
vec.back()      // 傳回最後一個資料,不檢查這個資料是否存在。
vec.begin()     // 傳回迭代器中的第一個資料地址。
vec.capacity()  // 返回容器中資料個數。
vec.clear()     // 移除容器中所有資料。
vec.empty()     // 判斷容器是否為空。
vec.end()       // 指向迭代器中末端元素的下一個,指向一個不存在元素。
vec.erase(pos)  // 刪除pos位置的資料,傳回下一個資料的位置。
vec.erase(beg,end)  //刪除[beg,end)區間的資料,傳回下一個資料的位置。
vec.front()     // 傳回第一個資料。


get_allocator // 使用建構函式返回一個拷貝。


vec.insert(pos,elem)    // 在pos位置插入一個elem拷貝,傳回新資料位置。
vec.insert(pos,n,elem)  // 在pos位置插入n個elem資料。無返回值。
vec.insert(pos,beg,end) // 在pos位置插入在[beg,end)區間的資料。無返回值。
  
vec.max_size()       // 返回容器中最大資料的數量。
vec.pop_back()       // 刪除最後一個資料。
vec.push_back(elem)  // 在尾部加入一個資料。
vec.rbegin()         // 傳回一個逆向佇列的第一個資料。
vec.rend()           // 傳回一個逆向佇列的最後一個資料的下一個位置。
vec.resize(num)      // 重新指定佇列的長度。
vec.reserve()        // 保留適當的容量。
vec.size()           // 返回容器中實際資料的個數。

 

vec1.swap(c2)
swap(c1,c2)        // 將c1和c2元素互換。同上操作。

 

vec.at(idx)    //傳回索引idx所指的資料,如果idx越界,丟擲out_of_range。

operator[]         // 返回容器中指定位置的一個引用。

  operator[]主要是為了與C語言進行相容。它可以像C語言陣列一樣操作。但at()是我們的首選,因為at()進行了邊界檢查,如果訪問超過了vector的範圍,將丟擲一個例外。由於operator[]容易造成一些錯誤,所有我們很少用它。

  同樣vector提供了erase(),pop_back(),clear()來刪除資料,當刪除資料時,應該知道要刪除尾部的資料,或者是刪除所有資料,還是個別的資料。

3、 初始化   
vector    c             // 建立一個空的vector。
vector c1(c2)          // 複製一個vector
vector c(n)            // 建立一個vector,含有n個資料,資料均已預設構造產生
vector c(n, elem)      // 建立一個含有n個elem拷貝的vector
vector c(beg,end)      // 建立一個含有n個elem拷貝的vector

 

轉載於:https://www.cnblogs.com/wujing-hubei/p/5670678.html

相關文章