max_size()
- теоретическое максимальное количество элементов, которое может быть помещено в ваш вектор.В 32-разрядной системе теоретически можно выделить 4Gb == 2 ^ 32, что составляет 2 ^ 32 char
значений, 2 ^ 30 int
значений или 2 ^ 29 double
значений.Может показаться, что ваша реализация использует это значение, но вычитая 1.
Конечно, вы никогда не сможете выделить такой большой вектор;у вас закончится память задолго до этого.
Нет никаких требований относительно того, какое значение max_size()
возвращает, кроме того, что вы не можете выделить вектор больше этого.В 64-разрядной системе он может возвращать 2 ^ 64-1 для char
, или он может возвращать меньшее значение, поскольку система имеет ограниченное пространство памяти.В любом случае, 64-битные ПК часто ограничены 48-битным адресным пространством.