Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#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

В MyVector::reserve нет необходимости копировать _cp элементов, можно меньше.

MyVector::resize не инициализирует элементы.

Конструкторы у тебя помечены как noexcept, но от исключения out of memory, которое может случиться в new они совершенно не застрахованы.

Не вижу оператора присваивания.

comment:2 Changed 3 years ago by antonenko.mixail

Type: ожидаются исправленияожидается проверка
Version: 1.02.0
  1. _sz? Сделано.
  2. Может быть, вы тогда покажете, как правильно нужно это делать? Потому что у меня из-под Clang всё инициализируется, вроде бы.
  3. Убраны noexcept.
  4. Сделан оператор copy assignment.

comment:3 Changed 3 years ago by Святослав Власов

Type: ожидается проверкаожидаются исправления
  1. Конструкция _data = new int[_cp]; НЕ проинициализирует нулями массив. Стандарт этого не гарантирует (хотя на практике компиляторы обычно инициализируют). При том конструкция _data = new int[_cp](); (отличия в пустых скобках) нулями массив уже проинициализирует. Это совершенно неочевидно, но, к сожалению, стандарт такой. Поэтому я рекомендую не полагаться на компилятор в этом месте (пустые скобки легко забыть), а проинициализировать массив руками, в цикле или memset.
  1. В твоем конструкторе копирования есть баг. Вот такой код может привести к сегфолту:
    MyVector a(4);
    MyVector b(1);
    
    a = b;
    

comment:4 Changed 3 years ago by Святослав Власов

Еще у тебя в main.cpp какой-то лишний код закоммитился, который тесты ломает.

comment:5 Changed 3 years ago by antonenko.mixail

  1. Ну так у меня и стояли скобки. Или нет?
  2. Это пункт 4. Переписал.

P.S. Заметил, что все записи на этом сайте можно читать без входа. Похоже на баг.

Last edited 3 years ago by antonenko.mixail (previous) (diff)

comment:6 Changed 3 years ago by antonenko.mixail

Type: ожидаются исправленияожидается проверка
Version: 2.03.0

comment:7 Changed 3 years ago by Святослав Власов

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

В resize и reserve ты заменил копирование _cp элементов на _sz, а в конструкторе копирования и операторе присваивания нет.
Но ладно, это не критично.

В остальном всё хорошо, зачтено.
Таблички пока нет, но скоро будет.

comment:8 Changed 3 years ago by antonenko.mixail

Да, потому что иначе инварианты не соблюдаются. Это один из способов написать так, чтобы ничего не инициализировалось дважды.

Last edited 3 years ago by antonenko.mixail (previous) (diff)
Note: See TracTickets for help on using tickets.