Реализация вектора, предоставляемая вашим компилятором, уже использует самый большой целочисленный тип, который он может использовать [*], обычно size_t
. Предположим, вы находитесь на машине с 32-битным адресным пространством и говорите, что хотите вектор с 2 ^ 33 элементами. Нет никакого способа, которым это может быть выделено, и изменение типа параметра operator[]
не даст вашему компьютеру возможность выделять большие блоки памяти.
Итак, убедитесь, что вы компилируете свой код для 64-битной Windows, и все должно быть хорошо.
[*] Это не гарантируется стандартом. Но авторам компиляторов на самом деле не нравится устанавливать ограничения без причины, даже если иногда это выглядит так.