vector是一種動態增長的陣列。
vector 遍歷
乙個vector中所含的資料為三根指標 start, finish, end_of_storage
所以sizeof()乙個vector值為12
。(乙個指標佔4位)
滿足前閉後開區間原則,start指向第乙個元素,finish指向最後乙個元素的下一位。
空間二倍增長
:發生在新增元素時當finish==end_of_storage,利用輔助插入函式insert_aux()函式實現
insert_aux()步驟:
1.檢查finish是否等於end_of_storage
2.如果size不為0,申請乙個2*size的空間。
3.將原vector中在插入元素之前的元素拷貝到新vector中。
4.將新的元素插入在新的vector內。
5.將原vector中在新插入元素之後的元素拷貝帶vector中。
注意:在push_back()中第1步和第5部是多餘的。push_back()在呼叫insert_aux()之前已經檢查過步驟1,push_back()在最後插元素不需要步驟5。insert_aux()之所以這樣設計是因為除了push_back()函式意外insert()函式也會呼叫insert_aux(),需要步驟1和5。
gnu2.9 中直接將迭代器定義為元素型別的指標。
演算法如果需要獲取迭代器的特徵(trait)使用萃取機( iterator_traits)
vector::iterator it=v.begin();
iterator_traits::iterator_category
iterator_traits::difference_type
iterator_traits::value_type
gnu4.9中迭代器被設計為一種複雜的class。
STL vector原始碼解析
vector維護的是乙個連續空間,所以不論其元素型別如何,普通指標都可作為vector的迭代器而滿足所有條件。vector的迭代器 t 資料型別,alloc 空間配置器 template classt,class alloc alloc class vector vector的資料結構 templa...
STL vector 輔助函式
template inline bool operator const vector tp,alloc x,const vector tp,alloc y 判斷相等 template inline bool operator const vector tp,alloc x,const vector ...
waitpid函式原始碼
int sys waitpid pid t pid,unsigned long stat addr int options 掛起當前程序,直到pid指定的子程序退出終止或者收到要求終止該程序 的訊號 或者需要呼叫 乙個訊號處理函式 elseif pid elseif pid 1 以下的語名定為要找到...