容器

标准容器
容器是一种持有者对象,用于存储其他对象的集合(其元素)。它们以类模板的形式实现,这使得所支持的元素类型具有很大的灵活性。

容器管理其元素的存储空间,并提供成员函数来直接或通过迭代器(具有类似指针属性的引用对象)访问它们。

容器复制了编程中非常常用的结构:动态数组 (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