¿Hay alguna diferencia entre size_t
y container::size_type
?
Lo que entiendo es que size_t
es más genérico y se puede usar para cualquier size_type
s.
¿Pero está container::size_type
optimizado para tipos específicos de contenedores?
c++
size-type
container-data-type
Charles Khunt
fuente
fuente
N1804
y no veo ninguna relación entreAllocator::size_type
ysize_type
. Un vistazo rápido a libstdc ++ tampoco muestra nada similar a esto.size_t
fue 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>::type
por defecto. Lo que en la práctica, probablemente será el mismo o compatible consize_t
.size_type
desaprobación. ¿Lo que da?size_t
se define como el tipo utilizado para el tamaño de un objeto y depende de la plataforma .container::size_type
es el tipo que se utiliza para el número de elementos del contenedor y depende del contenedor .Todos los
std
contenedores utilizansize_t
como elsize_type
, pero cada proveedor de biblioteca independiente elige un tipo que considera apropiado para su contenedor.Si miras qt, encontrará que los
size_type
contenedores de Qt dependen de la versión. En Qt3 lo fueunsigned int
y en Qt4 se cambió aint
.fuente
int
lugar dessize_t
,int
algo pequeño.Porque
std::[w]string
,std::[w]string::size_type
es 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_t
por 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_type
typedef si necesita almacenar el tamaño de los contenedores.fuente