Opened 4 years ago

Closed 4 years ago

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

WW #18

Reported by: sukhodolskiy.maksim Owned by: Egor Suvorov
Component: WW_format Version: 1.0
Keywords: Cc:

Description

Я тикет забыл создать...

Change History (1)

comment:1 Changed 4 years ago by Egor Suvorov

Resolution: задача НЕ сдана
Status: assignedclosed

Корректность 0.5/7:

  • Не работает с .format()
  • Получается hard ошибка компиляции для vector<S>, где S нельзя отформатировать никак.
  • Захардкожена оценка на размер числа. Компилятор может давать произвольные типы. Лучше numeric_limits<T>::digits10 (и аккуратно прочитать документацию и поэкспериментировать со значениями!)
  • Для пустого вектора выдаётся неверная оценка размера
  • to_string делает лишние выделения памяти
  • append_to для векторов использует больше памяти, чем было зарезервировано в make_string. Потому что вы сначала делаете строку длиннее, чем надо, а потом обрезаете.

Стиль 0.5/3:

  • Стоило сделать несколько специализаций FormatHelper с убираением ненужных по SFINAE. Тогда сразу:
    • Не надо делать is_vector
    • Не надо копировать код между estimate_size() и append_to(), проверяющий условия
  • Вместо conjunction_v<X, Y> лучше X_v && Y_v, аналогично с std::negation. Читается лучше.
  • Чтобы не разбирать отдельно vector<bool>, можно сделать каст элемента.
  • В append_to для векторов стоит использовать range-based-for: вам индекс не нужен. В правильном решении его удобно использовать, но у вас это не так.
Note: See TracTickets for help on using tickets.