为什么在 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 long
或 unsigned long long
如果您使用的是 TR1。或者……甚至更好……typedef
无论你最终使用什么 size_type
或者只包含 <cstddef>
并使用 std::size_t
.
关于c++ - C++ 和/或 C 中的 size_t 与 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32826872/