为什么在C++容器中,它返回的是size_type
而不是int
?如果我们正在创建自己的结构,我们是否也应该鼓励使用size_type
?
D.S*_*ley 26
通常,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
.
有几个原因可能是:
如果您正在编写一个仅适合您和/或一次性使用的应用程序,那么您可以使用基本的int.如果你正在编写一个库或一些实质性的东西,size_t可能是一个更好的方法.
有些答案比必要的要复杂得多.size_t是无符号整数类型,保证大到足以存储内存中任何对象的字节大小.实际上,它总是与指针类型相同.在32位系统上,它是32位.在64位系统上,它是64位.