bobbygrenn
Опубликовано 6 лет назад по предмету Информатика от bobbygrenn


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

  1. Ответ
    Ответ дан Disaczar
    циклом for можно реализовать задачу.for (i = 2; i < 5; i ++)v[i] = 0;
    1. Ответ
      Ответ дан DigitalAnnihilator
      * Нельзя использовать константы типа 2 и 5 или 0 в коде, это называется Magic Numbers и является очень плохой практикой* Никто не пишет i++, всегда пишут ++i, если вам неизвестно почему, советую обратится к документации и прочитать про функционирование префиксного и постфиксный инкремента а в частности о выполняемых ими опирациями и в чем разницв* Всегда пишите скобки ограничивающие область видимости для данного цикла, наделаете много ошибок если будете этим пренебрегать.
    2. Ответ
      Ответ дан DigitalAnnihilator
      Ну и как уже написал, лучше переделывайте и используйте всегда итераторы вместо индекса, это поможет вам избежать большенства ошибок с обращением к несуществующемму пространству.
    3. Ответ
      Ответ дан Disaczar
      во-первых: всё, что вы написали - я прекрасно знаю. во-вторых: цель моей конструкции - наглядно показать, а не сделать что-то сверх умное. кроме того, если бы я писал серьёзную программу, то написал бы нормальные итераторы и хорошо позаботился бы об алгоритме. в-третьих: если мне нужен итератор на последнем месте после работы цикла, то ++i -действительно хорошая вещь, но если у меня будет временная переменная для цикла, то i++ или ++i - уже дело вкуса.
    4. Ответ
      Ответ дан Disaczar
      ибо после работы цикла i "удалится". magic values/numbers - действительно ужасная вещь.
    5. Ответ
      Ответ дан DigitalAnnihilator
      Не обязательно удаляется индекс физичски, просто вы выходите из его области видимости :)Что на счёт итераторов то это для автора сабжа.На счёт Magic Numbers и "цель моей конструкции - наглядно показать" так показывайте нормально, а не пишите "антипаттерны", пока что это рабочий код махающий флагом:Привет! Я работаю, но писать как писали меня - не надо!
Не тот ответ, который вам нужен?
Найди нужный
Задай вопрос

Лучшие за месяц