Вам когда-нибудь был нужен массив с более чем 65 536 значений?
У меня на жестком диске тонны файлов, которые намного больше этого (вспоминаются mp3-файлы и некоторые исполняемые файлы).
Могу ли я хотеть целый файл в памяти за один раз? Конечно.
Предложения для всего приложения
С течением времени компьютеры будут получать больше памяти, поэтому не мешайте своему приложению использовать жестко закодированные значения.
Один из способов сделать это - использовать контейнеры переменного размера, такие как std::vector
, для хранения ваших значений. Затем вы можете оставить свой код подтверждения ввода пользователя, чтобы установить ограничение.
Как правило, вы должны проверять пользовательский ввод (включая входные файлы, значения, передаваемые в полях, значения, передаваемые в функциях и т. Д.) И устанавливать искусственные (но достаточно большие) ограничения на эти значения. Затем оставьте свой внутренний код свободным, чтобы расти по мере необходимости. Это значительно облегчает тестирование вашей программы, поскольку у вас есть целевое значение "maxs out", по которому вы хотите стрелять. Вы можете проверить и с уверенностью сказать, что поддерживаете эти верхние пределы, а также можете проверить обработку ошибок, когда пользователь использует значения выше этих пределов.
Позже, если вам действительно нужно / нужно, вы можете выполнить профилирование / тестирование производительности, чтобы отрегулировать пределы вашего приложения в соответствии с целевым объемом памяти или наилучшим образом ограничить объем данных, чтобы они оставались производительными.
Предложения для простых / низших классов
Не добавляйте жестко закодированные значения. Используйте контейнеры переменного размера, и пусть ваш код более высокого уровня справится с любыми жесткими ограничениями.
Пользователь должен правильно использовать ваш код, чтобы он не вызвал исключение. Код в вашем классе также не должен пытаться перехватить это исключение из нехватки памяти, так как ваш код почти наверняка не сможет восстановиться изящно.