vector的STL型式,其實就是以物件導向的方式來操作vector(如果您還沒接觸過物件導向程式設計,這邊介紹的可能稍有難度),以物件的方式來 操作vector是比較被鼓勵的方式,以下將介紹幾個vector的基本操作。 您可以建構一個元素為空的vector物件: vector 如果打算將元素放入vector中,可以使用push_back(),例如: for(int i = 0; i <> ivector.push_back(i); } 如果打算將元素循序取出,則可以begin()與end()方法分別傳回起始位置的iterator與結束位置的iterator,例如: for(vector it != ivector.end(); it++) { cout << *it << " "; } cout <<> iterator是標準函式庫定義類別(Class),它是一個指標,指向iterator物件的真正位址,對它進行++的動作,表示移動至 iterator的下一個元素,對它使用*運算子(Dereferences operator),表示提取出iterator目前位址的值,如果iterator走訪至結束位置的iterator的位址,表示元素走訪完畢。 雖然您可以使用下標運算子[ ]來存取vector的元素,但實際上要知道vector與陣列本質上是不相同的,當您如最上頭那樣宣告一個空的vector物件時,其容量 (capacity)為0,長度(size)也為0,所以此時您不能使用ivector[0]來取得第一個元素值,因為實際上ivector中還沒有任何 的元素。 當使用push_back()將元素加入vector時,vector的長度會自動增長,由於每次增長度都要配置記憶體過於沒有效率,所以vector會 自動先增加足夠的容量,當元素的長度超過容量時,才會再重新配置新的容量,您可以使用capacity()取得,使用size()取得元素長度,下面這個 程式綜合以上的幾個介紹作了示範: #include 結果如下:
如果打算對vector進行排序、尋找、反轉等操作,可以使用標準函式庫中的泛型演算法,要使用泛型演算法必須先含入表頭檔: #include 下面這個程式直接示範了排序、尋找、反轉等操作: #include 執行結果:
|
|
2009年7月28日 星期二
C++技術備忘錄 : 動態陣列
http://caterpillar.onlyfun.net/Gossip/CppGossip/vector2.html
訂閱:
文章 (Atom)