vector中常見介面的介紹與使用
阿新 • • 發佈:2018-12-31
迭代器相關
iterator begin(); | 正向迭代器:返回一個迭代器,指向vector物件的第一個元素 |
iterator end(); | 正向迭代器:返回一個迭代器,指向vector物件最後一個元素的後邊 |
reverse_iterator rbegin(); | 反向迭代器:返回一個迭代器,指向vector物件最後一個元素 |
reverse_iterator rend(); | 反向迭代器:返回一個迭代器,指向vector物件的第一個元素的前邊 |
容量相關
size_t size ( ) const; | 獲取當前物件中元素的個數 |
size_t max_size ( ) const; | 獲取當前物件最多可以容納多少個元素,包含還未分配給該物件的空間 |
size_t capacity( ) const; | 獲取當前物件的容量,是已經分配給物件的空間 |
void resize( size_t sz, T c = T() ); | 將當前物件的元素個數設定為sz個,sz比size大則預設使用0來填充 |
bool empty( ) const; | 判空,當前物件元素為空(size值為0),返回true,否則返回false |
void reserve( size_t n); | 保證當前物件的容量至少為n個 |
元素獲取
operator[ ] | 根據下標來訪問元素 |
const_reference at (size_t n) const reference at (size_t n) | 獲取下標為n的位置的元素,作用域 [ ]類似 |
const_reference front() const reference front() | 獲取物件的第一個元素 |
const_reference back() const reference back() | 獲取物件的最後一個元素 |
資料修改
void assign(InputIterator first,InputIterator last); void assign(size_t n, const T& u); | 將新的內容分配給物件,呼叫前丟棄向量中包含的所有元素後用引數指定的元素替換它們。 第二個版本是將物件裡邊的內容替換成n 個 u |
void push_back(const T& x); | 尾插,插入元素之前會先檢測是否有插入的空間,如果不夠了會進行擴容 |
void pop_back(); | 尾刪,不會改變容量 |
void insert ( iterator pos, size_t n, const T& x); void insert (iterator pos,IpIter first,IpIter last); | 指定位置插入,指定的位置必須是用迭代器表示 |
iterator erase(iterator pos); iterator erase(iterator first, iterator last); | 指定位置刪除,指定的位置必須是用迭代器表示 |
swap() | 交換兩個物件的內容 |
clear() | q清空物件的元素,即將size設定為0 |
#include <iostream>
using namespace std;
#include <vector>
void Show(vector<int>& v)
{
for (int i = 0; i < v.size(); i++)
cout << v[i] << " ";
cout << endl;
}
int main()
{
vector<int> v1;
for (int i = 0; i < 7; i++)
v1.push_back(i);
Show(v1);
v1.pop_back();
cout << "pop_back" << endl;
Show(v1);
cout << endl;
vector<int>::iterator it1 = v1.begin();
cout << "insert" << endl;
v1.insert(it1, 66); //在某個位置插入一個元素
int arr[5] = { 6, 7, 8, 9, 10 };
v1.insert(it1, arr, arr + 2); //在每個位置插入一段序列
Show(v1);
cout << endl;
vector<int> v2;
for (int i = 0; i < 8; i++)
v2.push_back(i+3);
cout << "erase" << endl;
v2.erase(v2.begin()+1); //刪除一個元素
Show(v2);
v2.erase(v2.begin(), v2.end()-3); //刪除一段元素
Show(v2);
cout << endl;
cout << "swap" << endl;
cout << "v1 :" ;
Show(v1);
cout << "v2 :" ;
Show(v2);
v2.swap(v1);
cout << "after swap" << endl;
cout << "v1 :" ;
Show(v1);
cout << "v2 :" ;
Show(v2);
cout << endl;
cout << "clear" << endl;
v1.clear();
cout << "size of v1: " << v1.size() << endl; //size被清為0
cout << "capacity of v1: " << v1.capacity() << endl; //容量依然不變
return 0;
}