Opened 3 years ago
Closed 3 years ago
#560 closed ожидается проверка (задача сдана)
WW#11
Reported by: | Daniil Lyubaev | Owned by: | Святослав Власов |
---|---|---|---|
Component: | WW_vector | Version: | 3.0 |
Keywords: | Cc: |
Description
Пока без тестов и обработки ошибок (запускать наверное смысла нет, хотя оно собирается).
Change History (6)
comment:2 Changed 3 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Твой вектор не инклюдит заголовочники, от которых зависит. Поэтому тестировочный код просто не собрался. Пришлось фиксить руками. Будь внимателен в следующий раз.
Тест на ресайз упал. Почему-то после vec.resize(0);
, vec.empty()
возвращает false
;
Тесты на гарантии исключений попадали c ошибками валгринда -- память течет. Ты не вызываешь деструкторы у уже созданных или скопированных объектов в случае, если один из конструкторов кидает исключение
- В такой конструкции нет никакого смысла? Зачем ты ловишь исключение, которое ты сразу же пробрасываешь дальше ничего не делая? Такого же эффекта можно достичь просто убрав этот
try-catch
блокtry { new_buf = new char[n * sizeof(T)]; } catch (...) { throw; }
- Кажется, что смысл в bool-аргументе функции
clear_mem
отпадет, если ты в тех случаях, где тыclear_mem
вызываешь сfalse
ты предварительно выставишьsize_
в 0. swap-trick
в операторе присваивания здорово бы сократил тебе код
6/10
comment:3 Changed 3 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
Если честно, я не увидел, каких инклюдов не хватает -- g++
не жалуется, а я не вижу :( Есть ли какой-то флаг, чтоб это сразу показывало? (в гугле не смог найти, извините, если Вам их опять придется добавлять). Остальное пофиксил.
comment:4 Changed 3 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
У тебя my_vector.h
зависит от <iostream>
, т.к. определял оператор <<
, но не инклюдил его. У тебя g++
не жаловался, потому что в твоем коде <iostream>
был подключен в main.cpp
выше чем "my_vector.h"
. Если бы ты заинклюдил my_vector.h
до <iostream>
, то компиляция бы и у тебя также рухнула.
Такого быть не должно. Все файлы от которых зависит твой код должны инклюдиться тобой самостоятельно.
Тест на ресайз упал с double free. Еще у тебя ресайз почему-то требует оператора присваивания у класса Т. Его может не быть. Твоя реализация должна обходиться только конструктором копирования.
Тест на строгую гарантию исключений у resize
и push_back
тоже упал -- вектор не остается в том же состоянии, если внутри этих функций летит эксепшен.
8/10
comment:5 Changed 3 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 2.0 → 3.0 |
comment:6 Changed 3 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
У тебя в push_back исключения не пробрасываются наверх, когда ловятся. Ты забыл throw;
написать.
Если добавить -- тесты проходят.
Других претензий к коду у меня нет, 10/10
Добавил функцию
test_my_vector()
, только я не уверен, что правильно тесты сделалUPD1: Добавил функцию
test_my_vector_default_constructible()
.UPD2: Добавил эксепшены.