size_t
come from when I don't have anything included?size_t
== std::size_t
?size_type
in std
containers (string::size_type
, vector<T>::size_type
, etc)?Where does size_t come from when I don't have anything included in an empty project?
If you don't have anything included, then you can't use size_t
. It's defined in <stddef.h>
(and perhaps also in <cstddef>
, if your version of that header puts the definitions in the global namespace as well as std
).
Is it reasonable to always assume size_t == std::size_t?
Yes. All types and functions defined by the C library are included in the std
namespace, as long as you include the appropriate C++ header (e.g. <cstddef>
rather than <stddef.h>
)
When should I use std::_::size_type?
Do you mean the size_type
types defined in some standard classes and templates such as vector
? You could use those when using those classes if you like. In most cases, you'll know that it's the same as size_t
, so you might as well use that and save a bit of typing. If you're writing generic code, where you don't know what the class is, then it's better to use size_type
in case it's not compatible with size_t
.
For example, you might want to write a container designed to hold more items than can be represented by size_t
. You might use some kind of big number type to represent the container's size, which isn't convertible to size_t
. In that case, code like size_t s = c.size()
would fail to compile - you'd need to use Container::size_type
instead.
Where does size_t
come from when I don't have anything included in an empty project?
size_t
is a base unsigned integer memsize-type defined in the standard library of C/C++ languages. It is defined in "stddef.h"
for C
and in <cstddef>
for C++
.
Types defined by the header file "stddef.h"
are located in the global namespace while <cstddef>
header places the size_t
type in the namespace std
.
"stddef.h"
from C is included into C++ for compatibility, and hence the type can be found in both the global namespace (::size_t
) and the std
namespace (std::size_t
).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With