'size_t' vs 'container::size_type'

Charles Khunt picture Charles Khunt · May 28, 2009 · Viewed 45.5k times · Source

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_types.

But is container::size_type optimized for specific kinds of containers?

Answer

Evan Teran picture Evan Teran · May 28, 2009

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.