Andrei Iakovlev #: Есть способ объявлять переменные только 1 раз внутри цикла for, чтобы при повторном выполнении цикла они не объявлялись заново?
как вариант: объекты объявить снаружи цикла, чтобы избегать лишних constructor/destructor? то есть на уровень выше цикла где используются
статики и глобалки - зло.
А объявления скаляров внутри циклов могут оптимизироваться компилятором. Если ему потребуется
То есть образно из "while(cond) { int i = 1; code follows }" компилятор может сотворить "int i ; while(cond) { i=1; code follows }" и самому этим заниматься - только вредить компилятору, себе и программе.
Пишите код ясно, объявляйте переменные там где они нужны, а низко-уровневую оптимизацию оставьте компилятору. Алгоритмы оптимизируйте(выбирайте лучшие), а не их реализацию.
Про static я забыл, потому что мне не совсем так хочется. For будет в любом случае, и внутри него 1 условие, которое может выполняться, а может не выполняться, и только в том случае, если оно выполняется, я бы хотел объявить переменные только 1 раз.
Может быть есть какой-нибудь интересный способ так сделать?
Про static я забыл, потому что мне не совсем так хочется. For будет в любом случае, и внутри него 1 условие, которое может выполняться, а может не выполняться, и только в том случае, если оно выполняется, я бы хотел объявить переменные только 1 раз.
Может быть есть какой-нибудь интересный способ так сделать?
что рекурсия побыстрее работает более чем в два раза. Представленная рекурсия вырождается в цикл, который очень похож на сравниваемый. что линковщик из рекурсии формирует цикл и в такой форме рекурсивной функции переполнения стека можно не бояться. почему при локальных переменных рекурсия стала работать медленнее
все таки iBarShift глючит. При наличии баров, выдает -1 в самом начале инициализации. Не мог понять причину неправильного поведения, но нашел. Спасает замена альтернативным решением.
Nikolai Semko #: все таки iBarShift глючит. При наличии баров, выдает -1 в самом начале инициализации. Не мог понять причину неправильного поведения, но нашел. Спасает замена альтернативным решением.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Рекомендация по сервису Фриланс, замените название Разработчик, Разработчику на Исполнитель.
Когда заказываешь текст и что то иное связанное не с программированием Разработчик пишется странновато.
Исполнитель - универсальное слово...
Рекомендация по сервису Фриланс, замените название Разработчик, Разработчику на Исполнитель.
Когда заказываешь текст и что то иное связанное не с программированием Разработчик пишется странновато.
Исполнитель - универсальное слово...
Есть негативная окраска сего наименования: "Они там исполняют"
Есть способ объявлять переменные только 1 раз внутри цикла for, чтобы при повторном выполнении цикла они не объявлялись заново?
static
Есть способ объявлять переменные только 1 раз внутри цикла for, чтобы при повторном выполнении цикла они не объявлялись заново?
как вариант: объекты объявить снаружи цикла, чтобы избегать лишних constructor/destructor? то есть на уровень выше цикла где используются
статики и глобалки - зло.
А объявления скаляров внутри циклов могут оптимизироваться компилятором. Если ему потребуется
То есть образно из "while(cond) { int i = 1; code follows }" компилятор может сотворить "int i ; while(cond) { i=1; code follows }" и самому этим заниматься - только вредить компилятору, себе и программе.
Пишите код ясно, объявляйте переменные там где они нужны, а низко-уровневую оптимизацию оставьте компилятору. Алгоритмы оптимизируйте(выбирайте лучшие), а не их реализацию.
static
Про static я забыл, потому что мне не совсем так хочется. For будет в любом случае, и внутри него 1 условие, которое может выполняться, а может не выполняться, и только в том случае, если оно выполняется, я бы хотел объявить переменные только 1 раз.
Может быть есть какой-нибудь интересный способ так сделать?
Про static я забыл, потому что мне не совсем так хочется. For будет в любом случае, и внутри него 1 условие, которое может выполняться, а может не выполняться, и только в том случае, если оно выполняется, я бы хотел объявить переменные только 1 раз.
Может быть есть какой-нибудь интересный способ так сделать?
Nikolai Semko #:
Существует ещё цикл с помощью рекурсивной функции
Очень интересно, спасибо, и я вспомнил, что уже видел это: https://www.mql5.com/ru/forum/1111/page3361#comment_48242594
А здесь пример применения: https://www.mql5.com/ru/code/25414
При наличии баров, выдает -1 в самом начале инициализации.
Не мог понять причину неправильного поведения, но нашел. Спасает замена альтернативным решением.
все таки iBarShift глючит.
При наличии баров, выдает -1 в самом начале инициализации.
Не мог понять причину неправильного поведения, но нашел. Спасает замена альтернативным решением.
Может, данные ещё не полностью подкачаны?