1. C++ / Говнокод #9518

    +991

    1. 1
    memmove(&*_Dest, &*_First, _Count * sizeof (*_First));

    в библиотеке memory, может я чего-то не понял, но выглядит как операция "подёргивание-2" (&*_Dest)

    Запостил: Taru4, 23 Февраля 2012

    Комментарии (13) RSS

    • Я вообще не понимаю, что здесь написано, потому что операции связанные с копированием и перемещением памяти обычно принимают на вход буфер в виде void*, который разыменовать нельзя.

      Правда, семантика С++ — это вещь в себе.
      Ответить
    • Это НЕ операция "подергивания" в ситуациях, когда оператор '*' является перегруженным, а не встроенным. Например, если '_Dest' - нетривиальной итератор, то '&*_Dest' - это конвертирование итератора в указатель (при условии, разумеется, что перегруженный оператор '*' возвращает lvalue, т.е. ссылку на объект). Для тривиальных итераторов, т.е. указателей, операция '&*' действительно превращается в "подергивание" и не порождает кода.

      Т.е. операция '&*' в С++ - это в обощем случае операция "преврати обобщенный указатель (итератор и т.п.) в физический указатель".
      Ответить
    • Вот и идите вы нахуй со своим С++, нах такое ляпать?
      Ответить
      • Ты чё какой злой в последнее время? Завидуешь Люру чтоли?
        Ответить
        • Хуже, бездельник я
          Ответить
          • Сессию завалил чтоли?
            Ответить
            • Нет, педагогическая практика. 2 дня в неделю, по уроку информатики в день. 6й класс
              Ах, да, забыл. По одной подгруппе в день. Так что один конспект на неделю.
              Ответить
              • Преподавать детям основы основ - это же так мило!
                Ответить
                • Ага, няшно. Презентации, презентации, презентации. Думаю одногруппницу подрядить во Flash рисовать, чтобы детям еще нагляднее было.
                  Ответить
        • Надо выпускать майки с такой надписью.
          Ответить
    • вспоминайти pure C люди :) это быстрое копирование массива _First в массив _Dest
      это аналогично
      memmove(&_Dest[0], &_First[0], _Count * sizeof (_First[0])) что есть более быстрым и понятным чем обычное
      for (int i=0;i<_Count;i++)
      _Dest[i]=_First[i];
      Ответить

    Добавить комментарий