• c++ STL; (vector) подскажите как в интервале заменить элементы
    ПРИМЕР: создали последовательность 1 2 3 4 5 6 7 8
    ввожу интервал например от 2 по 5 заменить на 0
    ВЫВОД: 1 2 0 0 0 7 8

Ответы 6

  • * Нельзя использовать константы типа 2 и 5 или 0 в коде, это называется Magic Numbers и является очень плохой практикой* Никто не пишет i++, всегда пишут ++i, если вам неизвестно почему, советую обратится к документации и прочитать про функционирование префиксного и постфиксный инкремента а в частности о выполняемых ими опирациями и в чем разницв* Всегда пишите скобки ограничивающие область видимости для данного цикла, наделаете много ошибок если будете этим пренебрегать.
    • Автор:

      varian
    • 6 лет назад
    • 0
  • Ну и как уже написал, лучше переделывайте и используйте всегда итераторы вместо индекса, это поможет вам избежать большенства ошибок с обращением к несуществующемму пространству.
  • во-первых: всё, что вы написали - я прекрасно знаю. во-вторых: цель моей конструкции - наглядно показать, а не сделать что-то сверх умное. кроме того, если бы я писал серьёзную программу, то написал бы нормальные итераторы и хорошо позаботился бы об алгоритме. в-третьих: если мне нужен итератор на последнем месте после работы цикла, то ++i -действительно хорошая вещь, но если у меня будет временная переменная для цикла, то i++ или ++i - уже дело вкуса.
    • Автор:

      joe85
    • 6 лет назад
    • 0
  • ибо после работы цикла i "удалится". magic values/numbers - действительно ужасная вещь.
    • Автор:

      grady
    • 6 лет назад
    • 0
  • Не обязательно удаляется индекс физичски, просто вы выходите из его области видимости :)Что на счёт итераторов то это для автора сабжа.На счёт Magic Numbers и "цель моей конструкции - наглядно показать" так показывайте нормально, а не пишите "антипаттерны", пока что это рабочий код махающий флагом:Привет! Я работаю, но писать как писали меня - не надо!
  • циклом for можно реализовать задачу.for (i = 2; i < 5; i ++)v[i] = 0;
    • Автор:

      merlin65
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years