Мое личное мнение по этому поводу состоит в том, что это для лучшей безопасности кода / читаемости.
Для меня int
- это тип, который не несет особого значения: он может нумеровать яблоки, бананы или что-либо еще.
size_type
, что, вероятно, typedef
для size_t
, имеет более сильное значение: оно указывает размер в байтах.
То есть легче узнать, что означает переменная. Конечно, после этого обоснования может быть много разных типов для разных юнитов. Но «размер буфера» действительно распространенный случай, поэтому он как-то заслуживает выделенного типа.
Другим аспектом является поддержка кода: если контейнер внезапно изменит свой size_type
, скажем, с uint64_t
на unsigned int
, например, используя size_type
, вам не нужно изменять его в каждом исходном коде, полагаясь на него. .