ptrdiff_t

ptrdiff_t 是 C/C++ 标准库中定义的一个与机器相关的数据类型。ptrdiff_t 类型变量通常用来保存两个指针减法操作的结果,在 cstddef 头文件中定义。用来保存两个指针减法操作的结果,通常被定义为 long int 类型。

ptrdiff_t 与 difference_type 区别,前面的是 C++ 定义的标准,后面则是 STL 定义的。

size_t

size_t是标准C库中定义的,它是一个基本的与机器相关的无符号整数的C/C+ +类型,它是sizeof操作符返回的结果类型。

常常会有人认为 在C/C++中 sizeof 是一个函数,而实际上 C/C++ 中的sizeof 是一个运算符。sizeof 运算符的结果是 size_t ,它是由 typedef 机制定义出来的”新”类型。

通常,size_t 和 ptrdiff_t 都是用typedef来实现的。

1
typedef unsigned int size_t

size_t还经常出现在C++标准库中,此外C++库中经常会使用一个相似的类型size_type。

  • size_t 是全局定义的类型;size_type 是 STL 类中定义的类型属性,用以保存任意 string 和 vector 对象的长度。
  • string::size_type 类型一般是 unsigned int, 但是不同机器环境长度可能不同

参考:size_t详解