Opened 4 years ago
Closed 4 years ago
#855 closed ожидается проверка (задача сдана)
WW #12
Reported by: | sukhodolskiy.maksim | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | WW_vector | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (4)
comment:1 Changed 4 years ago by
Type: | ожидается проверка → ожидается комментарий преподавателя |
---|
comment:2 Changed 4 years ago by
Type: | ожидается комментарий преподавателя → ожидаются исправления |
---|
comment:3 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:4 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Note: See
TracTickets for help on using
tickets.
Понимаю намерение, но в условии (не совсем явно) просят 1:
в resize может произойти исключение, его нужно обработать в теле конструктора
в operator= нужно быть аккуратнее с самоприсваиваниями
в resize и reserve делаются копии элементов, это не нужно. Нужно std::move, который гарантированно noexcept. С этим нужно быть аккуратно и делать в самом конце, когда уже гарантированно ничего плохого не произойдет.
в resize
здесь не то освобождается
здесь сначала разыменуется указатель (в невалидную область), а потом берется от результата адрес. Разыменовывать нельзя и не нужно.
clear_and_delete может позваться несколько раз в текущем виде, что приведет к double free.
assert(size_ > 0); or throw or consider it ub and do nothing?
assert- именно то, что нужно в данном случае. Его стоит добавить и в operator[]
лучше const T& ... const noexcept
42 size_t ceil_power_of_two(size_t n) const noexcept;
static
на лекциях предлагалось сделать класс-обертку, чтобы избежать дублирования кода по обработке исключений. Не предлагаю переделавать, но постарайтесь подумать над этим подходом и понять его преимущества.
В тестах не покрыты const - версии методов.
Если я правильно понимаю, попытка сделана прямо перед дедлайном. Можете внести исправления до конца модуля, следующая попытка последняя.