In general, size_t
should be used whenever you are measuring the size of something. It is really strange that size_t
is only required to represent between 0 and SIZE_MAX
bytes and SIZE_MAX
is only required to be 65,535...
The other interesting constraints from the C++ and C Standards are:
- the return type of
sizeof()
is size_t
and it is an unsigned integer
operator new()
takes the number of bytes to allocate as a size_t
parameter
size_t
is defined in <cstddef>
SIZE_MAX
is defined in <limits.h>
in C99 but not mentioned in C++98?!
size_t
is not included in the list of fundamental integer types so I have always assumed that size_t
is a type alias for one of the fundamental types: char
, short int
, int
, and long int
.
If you are counting bytes, then you should definitely be using size_t
. If you are counting the number of elements, then you should probably use size_t
since this seems to be what C++ has been using. In any case, you don't want to use int
- at the very least use unsigned long
or unsigned long long
if you are using TR1. Or... even better... typedef
whatever you end up using to size_type
or just include <cstddef>
and use std::size_t
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…