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 Sokolov Viacheslav

Type: ожидается проверкаожидается комментарий преподавателя
  • constexpr size_t MIN_CAP = 8;

Понимаю намерение, но в условии (не совсем явно) просят 1:

Методы и конструкторы, которые увеличивают capacity, делают его равным минимальной достаточной степени двойки.

template<typename T>
my_vector<T>::my_vector(std::size_t n)

в resize может произойти исключение, его нужно обработать в теле конструктора

в operator= нужно быть аккуратнее с самоприсваиваниями

в resize и reserve делаются копии элементов, это не нужно. Нужно std::move, который гарантированно noexcept. С этим нужно быть аккуратно и делать в самом конце, когда уже гарантированно ничего плохого не произойдет.

в resize

for (; i > 0; i--) {

array_[i - 1].~T();

здесь не то освобождается

new(&tmp[tmp.size_ - 1]) T(std::move(t));
new(&array_[size_]) T(std::move(t));

здесь сначала разыменуется указатель (в невалидную область), а потом берется от результата адрес. Разыменовывать нельзя и не нужно.

clear_and_delete может позваться несколько раз в текущем виде, что приведет к double free.

assert(size_ > 0); or throw or consider it ub and do nothing?
assert- именно то, что нужно в данном случае. Его стоит добавить и в operator[]

30 T operator[](std::size_t index) const;

лучше const T& ... const noexcept

42 size_t ceil_power_of_two(size_t n) const noexcept;
static

на лекциях предлагалось сделать класс-обертку, чтобы избежать дублирования кода по обработке исключений. Не предлагаю переделавать, но постарайтесь подумать над этим подходом и понять его преимущества.

В тестах не покрыты const - версии методов.

Если я правильно понимаю, попытка сделана прямо перед дедлайном. Можете внести исправления до конца модуля, следующая попытка последняя.

comment:2 Changed 4 years ago by Sokolov Viacheslav

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

comment:3 Changed 4 years ago by sukhodolskiy.maksim

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

comment:4 Changed 4 years ago by Sokolov Viacheslav

Resolution: задача сдана
Status: assignedclosed
Note: See TracTickets for help on using tickets.