前言
vector是c++中非常常用的容器之一泞当。我們可以把它理解為一個(gè)封裝好的數(shù)組迹蛤。它的儲(chǔ)存方式是通過(guò)連續(xù)地址儲(chǔ)存的順序結(jié)構(gòu),原理和數(shù)組類似零蓉,但它同時(shí)又提供了insert,erase這些方法笤受。
從它的原理中穷缤,我們就可以猜到敌蜂。vector的讀取速度非常快津肛。但在寫(xiě)入尤其是插入方面的性能是無(wú)法和list相比的章喉。
引入
#include<vector>
構(gòu)造方法
// 創(chuàng)建一個(gè)默認(rèn)的vector
vector<int> v = vector<int>();
// 創(chuàng)建一個(gè)長(zhǎng)度為3的vector
vector<int> v = vector<int>(3);
// 創(chuàng)建一個(gè)長(zhǎng)度為5,且初始值全部為1的vector
vector<int> v = vector<int>(5,1);
增
vector<int> v = vector<int>();
// 在尾部插入元素
v.push_back(10);
// 在中間插入元素
v.insert(v.begin()+i,a);
這里要注意,在使用insert方法時(shí)秸脱,一定要配合.begin()
使用落包,不能直接傳入索引始衅。
查
vector<int> v = vector<int>();
// 獲取v首個(gè)元素的迭代器
v.begin()
// 獲取v最后一個(gè)元素的迭代器
v.end();
// 獲取v的第3個(gè)元素的值
v[3]
遍歷
vector<int> vec = vector<int>();
vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
cout<<*it<<endl;
刪
vector<int> vec = vector<int>();
// 刪除第2個(gè)元素
vec.erase(vec.begin()+2);
// 清空vec
vec.clear();
獲取長(zhǎng)度
vector<int> vec = vector<int>();
// 獲取vec的長(zhǎng)度
vec.size();
算法
(1) 使用reverse將元素翻轉(zhuǎn):需要頭文件#include<algorithm>
reverse(vec.begin(),vec.end());
將元素翻轉(zhuǎn)(在vector中模她,如果一個(gè)函數(shù)中需要兩個(gè)迭代器,一般后一個(gè)都不包含.)
(2)使用sort排序:需要頭文件#include<algorithm>
鸭栖,
sort(vec.begin(),vec.end());
(默認(rèn)是按升序排列,即從小到大).
可以通過(guò)重寫(xiě)排序比較函數(shù)按照降序比較巷查,如下:
定義排序比較函數(shù):
bool Comp(const int &a,const int &b)
{
return a>b;
}
調(diào)用時(shí):sort(vec.begin(),vec.end(),Comp)
有序,這樣就降序排序。