STL中的函數(shù)都必須使用:變量名.函數(shù)名()表示序臂,例如vi.push_back();
vector翻譯為向量,使用“變長數(shù)組”的叫法更容易理解。在考試題中皂吮,有時會碰到普通數(shù)組會超內(nèi)存的情況筋夏,這時候使用vector會讓問題的解決便捷許多蒂胞。
使用vector要添加:#include<vector> ? ? using namespace std;
定義:vector<typename> name; ? ? 這個定義其實相當(dāng)于一維數(shù)組name[SIZE],只不過其長度可以變化,這里的typename可以是任何類型条篷,例如int骗随,double蛤织,char,結(jié)構(gòu)體等鸿染,也可以是STL容器指蚜,但在定義時記得在>>符號之間加上空格
舉個例子:vector<int> name;
? ? ? ? ? ? ? ? ? vector<double> name;
? ? ? ? ? ? ? ? ? vector<vector<int> > name; ? ? ? ? ? ? ? //>>之間要加空格,多用于二維數(shù)組(矩陣)----------即name[ ] 中的每一個元素都是一個vector(所以還要定義一個vector一維向量牡昆,然后將 v push_back到name 向量中)姚炕,初學(xué)者可以把二維vector數(shù)組當(dāng)作兩個維都可變長的二維數(shù)組。--------------------------------------------見下例題
vector容器內(nèi)元素的訪問:
(1)通過下標(biāo)訪問
對一個定義為vector<typename>vi的vector容器來說丢烘,直接訪問vi[index]即可 (如vi[0]柱宦、vi[1]),這里的下標(biāo)是從0到vi.size()-1
(2)通過迭代器訪問
迭代器可以理解為一種類似指針的東西播瞳,其定義為vector<typename>::iterator it; ? ? it 就是vector<typename>::iterator型的變量掸刊,并且通過 *it來訪問vector里的元素
或
既然上面提到了begin()函數(shù)的作用為取 vi 的首元素地址,那么這里就要提到end()函數(shù)赢乓。和begin()不同的是忧侧,end()并不是取vi的尾元素地址,而是取尾元素地址的下一個地址牌芋,end()作為迭代器末尾標(biāo)志蚓炬,不儲存任何元素。
畢竟美國人的思維比較習(xí)慣左閉右開躺屁。
最后再提一下肯夏,在常用STL容器中,只有在vector和string中犀暑,才允許使用vi.begin()+3這種迭代器加上整數(shù)的寫法驯击。
pop_back()
有添加就有刪除元素,pop_back()用以刪除vector的尾元素耐亏,時間復(fù)雜度是O(1)
clear() 函數(shù): 用來刪除vector中的所有元素
insert() :?
? ? ? ? ? ? ?insert(it徊都,x)用來向vector的任意迭代器 it 處插入一個元素x
erase()有兩種用法: ? ? ①刪除單個元素 ? ? ? ②刪除一個區(qū)間內(nèi)的所有元素
①
②