Кресты / Говнокод #9518 Ссылка на оригинал

0

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

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

Запостил: Taru4 Taru4, (Updated )

Комментарии (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];
    Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8