#285 closed ожидается проверка (задача сдана)
Lab 6
Reported by: | antonenko.mixail | Owned by: | Святослав Власов |
---|---|---|---|
Component: | WW_vector | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (8)
comment:1 Changed 3 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|---|
Version: | → 1.0 |
comment:2 Changed 3 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
- _sz? Сделано.
- Может быть, вы тогда покажете, как правильно нужно это делать? Потому что у меня из-под Clang всё инициализируется, вроде бы.
- Убраны noexcept.
- Сделан оператор copy assignment.
comment:3 Changed 3 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
- Конструкция
_data = new int[_cp];
НЕ проинициализирует нулями массив. Стандарт этого не гарантирует (хотя на практике компиляторы обычно инициализируют). При том конструкция_data = new int[_cp]();
(отличия в пустых скобках) нулями массив уже проинициализирует. Это совершенно неочевидно, но, к сожалению, стандарт такой. Поэтому я рекомендую не полагаться на компилятор в этом месте (пустые скобки легко забыть), а проинициализировать массив руками, в цикле илиmemset
.
- В твоем конструкторе копирования есть баг. Вот такой код может привести к сегфолту:
MyVector a(4); MyVector b(1); a = b;
comment:4 Changed 3 years ago by
Еще у тебя в main.cpp
какой-то лишний код закоммитился, который тесты ломает.
comment:5 Changed 3 years ago by
- Ну так у меня и стояли скобки. Или нет?
- Это пункт 4. Переписал.
P.S. Заметил, что все записи на этом сайте можно читать без входа. Похоже на баг.
comment:6 Changed 3 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 2.0 → 3.0 |
comment:7 Changed 3 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
В resize
и reserve
ты заменил копирование _cp
элементов на _sz
, а в конструкторе копирования и операторе присваивания нет.
Но ладно, это не критично.
В остальном всё хорошо, зачтено.
Таблички пока нет, но скоро будет.
comment:8 Changed 3 years ago by
Да, потому что иначе инварианты не соблюдаются. Это один из способов написать так, чтобы ничего не инициализировалось дважды.
Note: See
TracTickets for help on using
tickets.
В
MyVector::reserve
нет необходимости копировать_cp
элементов, можно меньше.MyVector::resize
не инициализирует элементы.Конструкторы у тебя помечены как
noexcept
, но от исключения out of memory, которое может случиться в new они совершенно не застрахованы.Не вижу оператора присваивания.