¿Hay alguna diferencia entre size_ty container::size_type?
Lo que entiendo es que size_tes más genérico y se puede usar para cualquier size_types.
¿Pero está container::size_typeoptimizado para tipos específicos de contenedores?
c++
size-type
container-data-type
Charles Khunt
fuente
fuente

N1804y no veo ninguna relación entreAllocator::size_typeysize_type. Un vistazo rápido a libstdc ++ tampoco muestra nada similar a esto.size_tfue la apuesta práctica la implementación de esas limitaciones. Sin embargo, en C ++ 11, ahora se define esencialmente como:std::make_unsigned<X::difference_type>::typepor defecto. Lo que en la práctica, probablemente será el mismo o compatible consize_t.size_typedesaprobación. ¿Lo que da?size_tse define como el tipo utilizado para el tamaño de un objeto y depende de la plataforma .container::size_typees el tipo que se utiliza para el número de elementos del contenedor y depende del contenedor .Todos los
stdcontenedores utilizansize_tcomo elsize_type, pero cada proveedor de biblioteca independiente elige un tipo que considera apropiado para su contenedor.Si miras qt, encontrará que los
size_typecontenedores de Qt dependen de la versión. En Qt3 lo fueunsigned inty en Qt4 se cambió aint.fuente
intlugar dessize_t,intalgo pequeño.Porque
std::[w]string,std::[w]string::size_typees igual astd::allocator<T>::size_type, que es igual astd::size_t. Para otros contenedores, es algún tipo de entero sin signo definido por la implementación.A veces es útil tener el tipo exacto, así que, por ejemplo, uno sabe dónde se envuelve el tipo (me gusta, a
UINT_MAX) para poder hacer uso de eso. O para plantillas, donde realmente necesita pasar dos tipos idénticos a plantillas de función / clase.A menudo encuentro que uso
size_tpor brevedad o iteradores de todos modos. En código genérico, dado que generalmente no sabe con qué instancia de contenedor se usa su plantilla y qué tamaño tienen esos contenedores, tendrá que usarContainer::size_typetypedef si necesita almacenar el tamaño de los contenedores.fuente