C++容器 I 向量 I Basic
class template <vector> std::vector
https://www.cplusplus.com/reference/vector/vector/

模板參數(shù)【Template parameters】
T
元素的類型。
只有保證T在移動(dòng)時(shí)不會(huì)拋出,實(shí)現(xiàn)才能優(yōu)化以移動(dòng)元素,而不是在重新分配期間復(fù)制它們。
別名為成員類型vector::value_type。
Alloc
用于定義存儲(chǔ)分配模型的分配器對(duì)象的類型。默認(rèn)情況下,使用分配器類模板,它定義了最簡(jiǎn)單的內(nèi)存分配模型,并且與值無關(guān)。
別名為成員類型vector::allocator_type。

向量【Vector】
向量是序列容器,表示可以改變大小的數(shù)組。
與數(shù)組一樣,向量使用連續(xù)的存儲(chǔ)位置存儲(chǔ)其元素,這意味著也可以使用指向其元素的常規(guī)指針上的偏移量來訪問其元素,其效率與數(shù)組中的相同。但與數(shù)組不同,它們的大小可以動(dòng)態(tài)變化,其存儲(chǔ)由容器自動(dòng)處理。
在內(nèi)部,向量使用一個(gè)動(dòng)態(tài)分配的數(shù)組來存儲(chǔ)它們的元素。當(dāng)插入新元素時(shí),可能需要重新分配該數(shù)組,以便增大其大小,這意味著分配一個(gè)新數(shù)組并將所有元素移動(dòng)到該數(shù)組中。就處理時(shí)間而言,這是一項(xiàng)相對(duì)昂貴的任務(wù),因此,向量不會(huì)在每次將元素添加到容器時(shí)重新分配。
相反,載體容器可能會(huì)分配一些額外的存儲(chǔ)空間,以適應(yīng)可能的增長(zhǎng),因此容器的實(shí)際容量可能會(huì)大于嚴(yán)格需要的存儲(chǔ)空間,以容納其元素(即其大小)。庫(kù)可以實(shí)現(xiàn)不同的增長(zhǎng)策略,以平衡內(nèi)存使用和重新分配,但在任何情況下,重新分配只應(yīng)以對(duì)數(shù)增長(zhǎng)的大小間隔進(jìn)行,以便在向量末尾插入單個(gè)元素時(shí),可以提供攤銷的恒定時(shí)間復(fù)雜度(參見push_back)。
因此,與數(shù)組相比,向量消耗更多內(nèi)存,以換取以高效方式管理存儲(chǔ)和動(dòng)態(tài)增長(zhǎng)的能力。
與其他動(dòng)態(tài)序列容器(deques、list和forward_list)相比,向量非常高效地訪問其元素(就像數(shù)組一樣),并且相對(duì)高效地從其末端添加或刪除元素。對(duì)于涉及在端點(diǎn)以外的位置插入或刪除元素的操作,它們的性能比其他操作差,并且與列表和轉(zhuǎn)發(fā)列表相比,迭代器和引用的一致性較差。

容器屬性【Container properties】
序列【Sequence】
序列容器中的元素按嚴(yán)格的線性序列排序。單個(gè)元素通過它們?cè)谠撔蛄兄械奈恢脕碓L問。
動(dòng)態(tài)數(shù)組【Dynamic array】
允許直接訪問序列中的任何元素,即使是通過指針?biāo)阈g(shù),并在序列末尾相對(duì)快速地添加/刪除元素。
分配器感知【Allocator-aware】
容器使用分配器對(duì)象動(dòng)態(tài)處理其存儲(chǔ)需求。

成員類型【Member types】


成員函數(shù)【Member functions】
(constructor)
構(gòu)造向量(公共成員函數(shù))
(destructor)
向量析構(gòu)函數(shù)(公共成員函數(shù))
operator=
分配公共內(nèi)容功能(成員)

Iterators:
begin
將迭代器返回到開頭(公共成員函數(shù))
end
返回迭代器結(jié)束(公共成員函數(shù))
rbegin
將反向迭代器返回到反向開始(公共成員函數(shù))
rend
返回反向迭代器到反向結(jié)束(公共成員函數(shù))
cbegin?
將常量迭代器返回到開頭(公共成員函數(shù))
cend?
返回常量迭代器結(jié)束(公共成員函數(shù))
crbegin
返回const_reverse_迭代器以反轉(zhuǎn)開始(公共成員函數(shù))
crend?
返回const_reverse_迭代器到reverse end(公共成員函數(shù))

Capacity:
size
返回大小(公共成員函數(shù))
max_size
返回最大大?。ü渤蓡T函數(shù))
resize
更改大?。ü渤蓡T功能)
capacity
已分配存儲(chǔ)容量的返回大小(公共成員函數(shù))
empty
測(cè)試向量是否為空(公共成員函數(shù))
reserve
請(qǐng)求更改容量(公共成員功能)
shrink_to_fit?
收縮到合適的尺寸(公共成員功能)

Element access:
operator[]
訪問元素(公共成員功能)
at
訪問元素(公共成員功能)
front
訪問第一個(gè)元素(公共成員功能)
back
訪問最后一個(gè)元素(公共成員函數(shù))
data?
訪問數(shù)據(jù)(公共成員功能)

Modifiers:
assign
指定向量?jī)?nèi)容(公共成員函數(shù))
push_back
在末尾添加元素(公共成員函數(shù))
pop_back
刪除最后一個(gè)元素(公共成員函數(shù))
insert
插入元素(公共成員函數(shù))
erase
刪除元素(公共成員功能)
swap
交換內(nèi)容(公共成員功能)
clear
清除內(nèi)容(公共成員函數(shù))
emplace?
構(gòu)造和插入元素(公共成員函數(shù))
emplace_back?
在末尾構(gòu)造并插入元素(公共成員函數(shù))

Allocator:
get_allocator
獲取分配器(公共成員函數(shù))