簡介
vector 就是一個不定長的數組,它封裝了一些常用的操作,定義時可以用vector< int >a,表示a是一個vector數組。a.size()可以訪問數組的長度,a.resize()可以改變它的大小,a.push_back()可以向其尾部增加元素,而a.pop_back()則是刪除其尾部元素。
vector是一個模板類,同時vector還可以嵌套另一個vector數組表示成一個二維數組的形式,這在一些數據範圍較大的題內很有用處。
比如普通一維數組開大於的長度就會報錯,二維是,這時用動態數組就可以了。
初始化
vector<int>a(100);
這句是將a數組的長度初始化爲100,這是通過構造函數來實現的,還有其它許多構造函數,下面一一舉例。
vector<int>a(100,1);
這樣是將內部的100個元素全部初始化爲1.
vector<int>a(100,1);
vector<int>b(a);
其中b是拷貝構造函數。
使用誤區
許多初學者(包括我)在使用時都直接將它當成了正常的數組來使用,但他們是不完全一樣的,vector是動態數組,使用前是需要給它分配空間的,跳過分配空間這一步的話,編譯器不會報錯,但會無法運行,如果用它提交程序的話會顯示runtime error。
正確的做法是利用其內部的構造函數來對它分配空間,或者選擇push_back()這一函數,分配完空間後動態數組就和正常數組無異啦。
在題目中的一些感悟
起初以爲它毫無利用價值,到現在發現其功能真的非常強大,不過因爲內存分配這個問題讓我RE了好多次才發現是這的問題,特意去搜了資料,所有問題都要追根溯源嘛,瞭解它的構造,認識到它的本質才能熟練掌握。加油!