Opened 6 years ago

Closed 6 years ago

#222 closed ожидается проверка (задача сдана)

Проверка домашнего задания №2 Хаффман

Reported by: Andrey Chausov Owned by: rutsky,grabovoy.philipp
Priority: проверка Milestone: ha2-deadline
Component: HA#2 huffman Version: 1.0
Keywords: Cc:

Description


Change History (4)

comment:1 Changed 6 years ago by Филипп

Milestone: ha2-milestone2ha1-deadline
Type: ожидается проверкаожидаются исправления

Привет!

Несколько замечаний:

  1. Версия CMake -- хватает 3.1
  2. Конструкторы копирования ifstream/ofstream в одиннадцатом стандарте удалены, лучше создавать их сразу в списке инициализации.
  3. Статистика для распаковки сжатой версии empty.in выглядит загадочно:
    0
    0
    1281
    
  4. В конструкторе Node(Node * left, Node * right) все можно задать через список инициализации.
  5. reinterpret_cast -- достаточно сильное приведение типа (в данном случае: uint8_t * <-> char *). Обычно оно используется для приведения разных по размерам/внутренним устройствам классов, для избегания вызова operator T(). Здесь такого не требуется, static_cast вполне подойдет. Подробнее будет далее в курсе.
  6. Приведение типов лучше использовать одного вида: через операторы *_cast. И стилистически это лучше, и они более конкретны.
  7. Зачем при записи в файлик универсальня ссылка: for (auto && i : code) {...}?

comment:2 in reply to:  1 Changed 6 years ago by Andrey Chausov

Replying to grabovoy:

  1. reinterpret_cast -- достаточно сильное приведение типа (в данном случае: uint8_t * <-> char *). Обычно оно используется для приведения разных по размерам/внутренним устройствам классов, для избегания вызова operator T(). Здесь такого не требуется, static_cast вполне подойдет. Подробнее будет далее в курсе.

Здравствуйте,

У меня возникли вопросы с замечанием №5. Типы указателей на uint8_t и char не удаётся напрямую привести с помощью static_cast. Я правильно понимаю, что следует сначала привести uint8_t * к void *, а потом к char *?

comment:3 Changed 6 years ago by Andrey Chausov

Milestone: ha1-deadlineha2-deadline
Type: ожидаются исправленияожидается проверка

Спасибо за проверку, поправил замечания.

comment:4 Changed 6 years ago by Филипп

Resolution: задача сдана
Status: newclosed

Привет!

Я правильно понимаю, что следует сначала привести uint8_t * к void *, а потом к char *?

Прошу прощения, не доглядел: явно рекомендуют при преобразованиях над указателями использовать именно reinterpret_cast (http://en.cppreference.com/w/cpp/language/reinterpret_cast , п. 5).
И static_cast<std::string> (argv[1]) не очень красиво смотрится :) Можно смело оставлять полноценное конструирование строки (в данном случае это одно и то же)

Note: See TracTickets for help on using tickets.