'size_t' vs 'container::size_type'

c++, container-data-type, size-type

Solution

The standard containers define `size_type` as a typedef to `Allocator::size_type` (Allocator is a template parameter), which for `std::allocator<T>::size_type` is typically defined to be `size_t` (or a compatible type). So for the standard case, they are the same.

However, if you use a custom allocator a different underlying type could be used. So `container::size_type` is preferable for maximum generality.

Problem

Is there is a difference between `size_t` and `container::size_type`? What I understand is `size_t` is more generic and can be used for any `size_type`s. But is `container::size_type` optimized for specific kinds of containers?

Original source

Related problems