Pour std::[w]string
, std::[w]string::size_type
est égal à std::allocator<T>::size_type
qui est égale à la std::size_t
. Pour les autres conteneurs, il s'agit d'un type d'entier non signé défini par l'implémentation.
Il est parfois utile d'avoir le type exact, afin de savoir par exemple où le type s'enroule (par exemple, à UINT_MAX
) afin de pouvoir l'utiliser. Ou pour les modèles, lorsqu'il est vraiment nécessaire de passer deux types identiques aux modèles de fonctions/classes.
Souvent, j'utilise size_t
pour des raisons de brièveté ou d'itération. Dans le code générique, puisque vous ne savez généralement pas avec quelle instance de conteneur votre modèle est utilisé et quelle est la taille de ces conteneurs, vous devrez utiliser la fonction Container::size_type
typedef si vous avez besoin de stocker la taille des conteneurs.