c++ - C++ 和/或 C 中的 size_t 与 int

标签 c++ c size-type

为什么在 C++ 容器中,它返回一个 size_type 而不是 int?如果我们要创建自己的结构,是否也应该鼓励我们使用 size_type

最佳答案

一般来说,size_t每当你测量某物的大小时都应该使用。 size_t真的很奇怪只需要代表 0 到 SIZE_MAX 之间字节和 SIZE_MAX只需要 65,535...

C++ 和 C 标准的其他有趣约束是:

  • sizeof() 的返回类型是size_t它是一个无符号整数
  • operator new()将要分配的字节数作为 size_t参数
  • size_t<cstddef> 中定义
  • SIZE_MAX<limits.h> 中定义在 C99 中但在 C++98 中没有提到?!
  • size_t不包含在基本整数类型列表中,所以我一直假设 size_t是一种基本类型的类型别名:char , short int , int , 和 long int .

如果您正在计算字节数,那么您绝对应该使用 size_t .如果你正在计算元素的数量,那么你应该使用 size_t因为这似乎是 C++ 一直在使用的。无论如何,您不想使用 int - 至少使用 unsigned longunsigned long long如果您使用的是 TR1。或者……甚至更好……typedef无论你最终使用什么 size_type或者只包含 <cstddef>并使用 std::size_t .

关于c++ - C++ 和/或 C 中的 size_t 与 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32826872/

相关文章:

c++ - 循环中的 Stroustrup 和溢出 size_type

c++ - Qt MOC生成代码文档

c++ - GetDC() 断言失败(使用 mfc)

c++ - 在可变参数模板中使用垫片的更简洁的方法?

带负操作数的 C++ size_t 模运算

c++ - string::size_type 而不是 int

c++ - 如何从 std::wstring _TCHAR [] 转换?

c - 使用 C 和程序集创建用户级线程的段错误

c - 如何强制宏不展开

c - 文字常量的问题