c – 对于具有默认分配器的标准容器,std :: container :: size_type是否保证为size_t?

喜欢:

> std :: string< T> :: size_type
> std :: list< T> :: size_type
> std :: map< T> :: size_type
> std :: vector< T> :: size_type
>等

cplusplus.comcppreference.com都说它们通常是size_t,但是除非使用自定义分配器,否则它们是否真正,毫无疑问地被标准保证为size_t?

最佳答案
对于STL容器 – 不. [container.requirements.general]中标准的表96列出了任何容器X的容器需求,非常清楚地说明了这一点:

但是,对于basic_string,size_type定义为

typedef typename allocator_traits<Allocator>::size_type size_type;

对于std :: allocator< ..>反过来将是size_t作为分配者.

此外,根据[array.overview] / 3,std :: array使用size_t作为size_type.

转载注明原文:c – 对于具有默认分配器的标准容器,std :: container :: size_type是否保证为size_t? - 代码日志