对于具有默认分配器的标准容器,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_stringsize_type定义为

typedef typename allocator_traits<Allocator>::size_type size_type;

这反过来将size_t用于std::allocator<..>为分配器。

此外,std::array使用size_tsize_type,根据[array.overview] / 3。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

size_t和std :: size_t之间的区别

std :: vector :: resize(size_type)需要CopyInsertable吗?

std :: allocator_traits默认使用具有多个模板参数的分配器

“ size_t”是否始终是“ vector <int> :: size_type”或其他任何容器类型的别名?

如何处理size_t与std :: size_t?

将unsigned int与std :: string :: size_type进行比较是否安全?

为什么顺序容器同时具有size_type和difference_type?

确保std :: container :: size_type是std :: size_t

size_t和内存分配

分配器感知容器和property_on_container_swap

如果我递减`std :: size_t(0)`是否等于`std :: size_t(-1)`?

将ptrdiff_t的正值分配给size_t是否安全?

std :: map :: size_type用于其value_type是其自己的size_type的std :: map

为什么std :: span缺少size_type?

具有自定义分配器的const T STL容器格式不正确吗?

如何处理std :: vector <...> :: size_type为int

从std :: array等获取size_type的惯用方式

当知道分配器的容器被复制/移动时,反弹分配器是否被复制/移动?

为什么默认由value_type参数化std :: list分配器?

size_t是否具有与ptrdiff_t相同的大小和对齐方式?

是否有标准的memory_resource分配器适配器/包装器?

如何打印std :: vector <> :: size_type?

在比较中处理int和std :: vector :: size_type

std :: vectors中size_type的较短表示法

std::size_t 还是 std::vector<Foo>::size_type?

消除“转换为 std::vector<int>::size_type 为 int”警告

为 STL 分配器实现 select_on_container_copy_construction()

为 STL 容器使用带有自定义分配器的内存池

为什么 text.size() 返回 std::size_t 而不是 std::string::size_type