容器

標準容器
容器是一種持有者物件,用於儲存其他物件的集合(其元素)。它們以類模板的形式實現,這使得所支援的元素型別具有很大的靈活性。

容器管理其元素的儲存空間,並提供成員函式來直接或透過迭代器(具有類似指標屬性的引用物件)訪問它們。

容器複製了程式設計中非常常用的結構:動態陣列 (vector)、佇列 (queue)、棧 (stack)、堆 (priority_queue)、連結串列 (list)、樹 (set)、關聯陣列 (map)...

許多容器有幾個共同的成員函式,並共享功能。針對特定需求決定使用哪種型別的容器,通常不僅取決於容器提供的功能,還取決於其某些成員的效率(複雜性)。對於序列容器尤其如此,它們在插入/刪除元素和訪問元素之間的複雜性方面提供了不同的權衡。

stackqueuepriority_queue 被實現為容器介面卡。容器介面卡不是完整的容器類,而是提供特定介面的類,它依賴於某個容器類(如 dequelist)的物件來處理元素。底層容器被封裝起來,使得其元素可以被容器介面卡的成員訪問,而與所使用的底層容器類無關。

容器類模板

序列容器:

容器介面卡:

關聯容器:

無序關聯容器:

其他:
有兩個類模板與容器共享某些屬性,有時會與它們一起分類:bitsetvalarray

成員一覽表

這是一個比較圖表,列出了不同容器中存在的不同成員函式

圖例:
C++98C++98 起可用
C++11C++11 新增

序列容器

標頭檔案<array><vector><deque><forward_list><list>
成員arrayvectordequeforward_listlist
建構函式隱式vectordequeforward_listlist
解構函式隱式~vector~deque~forward_list~list
operator=隱式operator=operator=operator=operator=
迭代器beginbeginbeginbeginbegin
before_begin
begin
endendendendendend
rbeginrbeginrbeginrbegin rbegin
rendrendrendrend rend
常量迭代器cbegincbegincbegincbegincbegin
cbefore_begin
cbegin
cendcendcendcendcendcend
crbegincrbegincrbegincrbegin crbegin
crendcrendcrendcrend crend
容量sizesizesizesize size
max_sizemax_sizemax_sizemax_sizemax_sizemax_size
emptyemptyemptyemptyemptyempty
resize resizeresizeresizeresize
shrink_to_fit shrink_to_fitshrink_to_fit
容量 容量
reserve reserve
元素訪問frontfrontfrontfrontfrontfront
backbackbackback back
operator[]operator[]operator[]operator[]
atatatat
修改器assign assignassignassignassign
emplace emplaceemplaceemplace_afteremplace
insert insertinsertinsert_afterinsert
erase eraseeraseerase_aftererase
emplace_back emplace_backemplace_back emplace_back
push_back push_backpush_back push_back
pop_back pop_backpop_back pop_back
emplace_front emplace_frontemplace_frontemplace_front
push_front push_frontpush_frontpush_front
pop_front pop_frontpop_frontpop_front
clear clearclearclearclear
swapswapswapswapswapswap
列表操作splice splice_aftersplice
remove removeremove
remove_if remove_ifremove_if
unique uniqueunique
merge mergemerge
sort sortsort
reverse reversereverse
觀察器get_allocator get_allocatorget_allocatorget_allocatorget_allocator
datadatadata

關聯容器

標頭檔案<set><map><unordered_set><unordered_map>
成員setmultisetmapmultimapunordered_setunordered_multisetunordered_mapunordered_multimap
建構函式setmultisetmapmultimapunordered_setunordered_multisetunordered_mapunordered_multimap
解構函式~set~multiset~map~multimap~unordered_set~unordered_multiset~unordered_map~unordered_multimap
賦值operator=operator=operator=operator=operator=operator=operator=operator=
迭代器beginbeginbeginbeginbeginbeginbeginbeginbegin
endendendendendendendendend
rbeginrbeginrbeginrbeginrbegin
rendrendrendrendrend
常量迭代器cbegincbegincbegincbegincbegincbegincbegincbegincbegin
cendcendcendcendcendcendcendcendcend
crbegincrbegincrbegincrbegincrbegin
crendcrendcrendcrendcrend
容量sizesizesizesizesizesizesizesizesize
max_sizemax_sizemax_sizemax_sizemax_sizemax_sizemax_sizemax_sizemax_size
emptyemptyemptyemptyemptyemptyemptyemptyempty
reserve reservereservereservereserve
元素訪問at at at
operator[] operator[] operator[]
修改器emplaceemplaceemplaceemplaceemplaceemplaceemplaceemplaceemplace
emplace_hintemplace_hintemplace_hintemplace_hintemplace_hintemplace_hintemplace_hintemplace_hintemplace_hint
insertinsertinsertinsertinsertinsertinsertinsertinsert
eraseeraseeraseeraseeraseeraseeraseeraseerase
clearclearclearclearclearclearclearclearclear
swapswapswapswapswapswapswapswapswap
操作countcountcountcountcountcountcountcountcount
findfindfindfindfindfindfindfindfind
equal_rangeequal_rangeequal_rangeequal_rangeequal_rangeequal_rangeequal_rangeequal_rangeequal_range
lower_boundlower_boundlower_boundlower_boundlower_bound
upper_boundupper_boundupper_boundupper_boundupper_bound
觀察器get_allocatorget_allocatorget_allocatorget_allocatorget_allocatorget_allocatorget_allocatorget_allocatorget_allocator
key_compkey_compkey_compkey_compkey_comp
value_compvalue_compvalue_compvalue_compvalue_comp
key_eq key_eqkey_eqkey_eqkey_eq
hash_function hash_functionhash_functionhash_functionhash_function
bucket bucketbucketbucketbucket
bucket_count bucket_countbucket_countbucket_countbucket_count
bucket_size bucket_sizebucket_sizebucket_sizebucket_size
max_bucket_count max_bucket_countmax_bucket_countmax_bucket_countmax_bucket_count
雜湊策略rehash rehashrehashrehashrehash
load_factor load_factorload_factorload_factorload_factor
max_load_factor max_load_factormax_load_factormax_load_factormax_load_factor