Opened 3 years ago

Closed 3 years ago

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

WW11

Reported by: morozov.nikita Owned by: Святослав Власов
Component: WW_vector Version: 3.0
Keywords: Cc:

Description

FFF

Change History (6)

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

Тесты прошли.

Замечания:

  1. Не хватает неконстантного оператора [] значит через него нельзя менять элементы
  2. Зачем в операторе присваивания выделять временный объект на куче? На стеке будет проще и чуть-чуть поэффективнее
  3. Конструктор копий вектора будет течь, если конструктор копирования T швырнет какой-нибудь эксепшен
  4. Аналогично с конструктором от size_t
  5. Не нужно подменять исключение брошенное классом T на свое собственное. Так вызывающий код теряет возможность понять что же случилось и корректно на это среагировать.
  6. В push_back у тебя происходит лишнее копирование объекта -- аргумент принимается по значению и потом копируется в буфер. Например, в таком коде произойдет два вызова конструктора копий, а хватило бы одного:
      Element e;
      v.push_back(e);
    
  7. В main намешал пробелов и табуляций -- у меня всё съехало :-/

В остальном код очень хороший, ты молодец!
8/10

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

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

comment:3 Changed 3 years ago by morozov.nikita

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

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

Type: ожидается проверкаожидаются исправления
  1. push_back должен принимать объект по константной ссылке, а не по обычной. Ты ведь не меняешь объект внутри.
  2. С гарантиями исключений всё по прежнему не очень хорошо. reserve,resize,push_back не дают строгой гарантии.

9/10

comment:5 Changed 3 years ago by morozov.nikita

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

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

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

С гарантиями исключений стало лучше, но не до конца -- на push_back ругается валгринд, а еще теперь упал тест на ресайз.

Еще у тебя бессмысленная копи-паста между resize и push_back. Зачем ты в resize рассматриваешь два случая когда хватает capacity и когда не хватает, если в push_back ты делаешь ровно то же самое?

9/10

Note: See TracTickets for help on using tickets.