Я рассмотрел использование этого ярлыка в моих соревнованиях по программированию.Я определяю функцию:
private static int[] range(int n) {
int[] ret = new int[n];
for (int i = 0; i < n; i++) {
ret[i] = i;
}
return ret;
}
, чтобы я мог писать свои циклы for немного быстрее и более аккуратно (при сканировании кода):
for (int i: range(n)) { doit(i); }
вместо:
for (int i = 0; i < n; i++) { doit(i); }
Существуют ли какие-либо существенные проблемы с производительностью при таком подходе и каковы они?
Код имеет ограничение по времени для расчета решения, но, используя правильный алгоритм, он обычноВозможно сделать это за часть срока.Функция диапазона работает в O (n), и поскольку мы все равно собираемся запустить цикл O (n), временная сложность не увеличивается.Как насчет сбора мусора?Что-нибудь еще, о чем я не думаю?
Я определю, действительно ли мне нравится , используя этот метод позже, и стоит ли мне затрачивать время на ввод функций в начале соревнования, Пожалуйста, не отвечайте о стиле. (Конкурсное кодирование создает один из худших на вид кодов, который вы когда-либо видели, но все дело в том, чтобы сделать это вовремя и никогда не смотреть на него снова.)
Чтобы уточнить, фактическое время кодирования имеет решающее значение в этом конкурсе, и мы не можем принести предварительно напечатанный код.Как правило, это также означает отсутствие фрагментов кода.foreach
сделает циклы for быстрее набираемыми и менее подверженными ошибкам в спешной и грязной среде программирования.Это альтернатива макросам в C ++.