Vector是STL容器裡面最簡單的一個,但是在資料結構裡面也鮮少有提到,但是在STL裡面卻時常利用這個資料結構。在這裡擺上我今天學習Vector的一些重點,讓大家分享一下。
Vector是一個線性空間,但是為一個可以變動大小的線性空間,在宣告之後整個空間就像陣列(array)一樣為一個連續的線性空間,亦可以在上面進行類似Array的操作(比如說直接給值 a[i]=5 ; 或是直接顯示值 a[i]),而且Vector還可以隨意插入任何一個位置之中,並且使之後的元素均往後退一個(這個在array之中倒是需要實做上去加強的功能),並且最重要的是在Vector之中,他的位置是可以變動大小的。也就是若你一開始宣告的Vector大小為5,但是當你插入第6個元素的時候,整個Vector會自動變更大小到現在的兩倍(10個)。針對這個功能,所以Vector在使用上變的相當的方便,加上STL中泛型的設計概念使得Vector變得更強大,能解決的問題也就更多。整理Vector的特點如下:
Vector特點
在今天的學習筆記之中,我附上一個自己的範例程式碼,方便各位如果要測試程式的時候一個參考依據:
解說:這個程式主要就是在測試一些Vector的功能,就是建立一個大小為(2)的Vector,並且不斷插入(pushback)一些數值之後,顯示整個Vector的size(已用的空間)與capacity(整個Vector的空間),而這個也是參考侯捷老師所寫的書<STL 源碼剖析>裡面的範例所打的。
尚未完成:雖然整體的Vector應用已經有一定程度的瞭解,但是總覺得對於空間的配置上,Vector自動擴充到兩倍空間這個特性其實有點浪費空間,也使得一開始的宣告上變的不能使用太大的空間(避免兩倍擴充空間變成龐大空間負擔)。並且Vector在clear之後,擴大的空間無法縮回來,使得整個空間大小變的相當的巨大(往往操作過後,會變的很大),以上兩點是我這幾天希望能修改原始碼完成的,但是由於stlport裡面所用的Vector程式碼與<STL 源碼剖析>裡面的內容有一點點不同,可能這幾天看懂後才開始修改~~~
你好 ...
我最近也在學習 STL
但是我發現 , 因為我以前太混的關係
所以 我根本不知道該如何開始玩起
如果以一個完全都沒接觸過c++ 的人來說
應該如何學起呢 ?
如果對於C++ 不熟
還是依照 侯捷老師的建議
先將基本 C++的概念熟悉
(類別,物件,變數,std,....)
在學會比較好
不然直接學stl 會比較累吧
由 Evan 發表於 May 13, 2004 05:12 PM