STL vector原始碼解析

2021-10-20 18:51:19 字數 1542 閱讀 5862

vector維護的是乙個連續空間,所以不論其元素型別如何,普通指標都可作為vector的迭代器而滿足所有條件。

vector的迭代器

// 	t:資料型別,alloc:空間配置器

template

<

classt,

class

alloc

= alloc>

class

vector

vector的資料結構

template

<

classt,

class

alloc

= alloc>

class

vector

為了降低空間配置的速度成本,vector實際配置的大小可能比客戶端需求量更大一些,以備將來可能的擴充,這便是**容量(capacity)**的概念

增加新元素時,如果超過了當時的容量,則容量擴充至兩倍,如果兩倍容量仍不足,就擴張至足夠大的容量。

注意!容量的擴張必須經歷「重新配置、元素移動、釋放源空間」等過程。

vector的構造和記憶體管理

#include

intmain

(void

)

過程:

配置空間**

在這裡插入**片
vector元素操作

這是我對於vector的g2.9版本的注釋,可能更好理解一點

/*  t:data type

* alloc:allocator

*/template

<

classt,

class

alloc

= alloc>

class

vector

iterator end()

size_type size()

const

size_type capacity()

bool

empty()

const

reference operator

(size_type n)

reference front()

reference back()

void

insert_aux

(iterator position,

const t& x)

else

catch(.

..)destroy

(begin()

,end()

);deallocate()

; start = new_start;

finish = new_finish;

end_of_storage = new_start+len;}}

void

push_back

(const t& x)

else}}

;

STL vector原始碼及函式

vector是一種動態增長的陣列。vector 遍歷 乙個vector中所含的資料為三根指標 start,finish,end of storage 所以sizeof 乙個vector值為12。乙個指標佔4位 滿足前閉後開區間原則,start指向第乙個元素,finish指向最後乙個元素的下一位。空間...

Fabric 原始碼解析 原始碼目錄解析

這裡對重要的一些目錄進行說明 bccsp 與密碼學 加密 簽名 證書等等 相關的加密服務 將fabric中用到的密碼學相關的函式抽象成了一組介面,便於拓展。bddtests 一種新型的軟體開發模式 行為驅動開 需求 開發 common 一些公共庫 錯誤處理 日誌處理 賬本儲存 策略以及各種工具等等 ...

Spring原始碼解析之 Aop原始碼解析(2)

spring aop 更多的是oop開發模式的乙個補充,幫助oop以更好的方式來解決對於需要解決業務功能模組之上統一管理 的功能 以一副圖來做為aop功能的說明更直觀些。對於類似系統的安全檢查,系統日誌,事務管理等相關功能,物件導向的開發方法並沒有更好的解決方法 aop引入了一些概念。更多的是spr...