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

标签 c++ stl portability

喜欢:

  • 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 ,解释得很清楚:

enter image description here


但是,对于 basic_string , size_type定义为

typedef typename allocator_traits<Allocator>::size_type size_type;

这又将是 size_t对于 std::allocator<..>作为分配器。

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

关于c++ - 对于具有默认分配器的标准容器,std::container::size_type 是否保证为 size_t?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26433802/

相关文章:

c++ - 如何将 STL 映射保存到文件 C++

c++ - WinMain 与 main (C++)

c++ - 排序 vector 不起作用

c++ - 如何检查进程或线程是否存在或未在 C++ 中给出它们的 ID?

c++ - ffmpeg 异步 io?

c++ - vector::push_back 在没有复制构造函数的对象上——指针值丢失了吗?

c++ - 反向 map 查找

c++ - 如何使 DEBUG 宏可移植

java - Android 上的可移植 JDBC 与 SQLite

windows - 部署可移植 HTML/JavaScript Windows 应用程序的良好框架是什么?