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