Opened 3 years ago
Closed 3 years ago
#572 closed ожидается проверка (задача сдана)
WW #11
Reported by: | Станислав Михайлов | Owned by: | Святослав Власов |
---|---|---|---|
Component: | WW_vector | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (3)
comment:1 Changed 3 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 3 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:3 Changed 3 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
- Зачем поменял сигнатуру push_back? Она константную ссылку должна принимать, а не объект по значению.
- Контракт на изменение capacity не выполняется по прежнему. Буфер должен удваиваться только когда памяти под новый элемент не хватает, а у тебя удваивается когда память еще есть.
- Тест на копирование упал. Нельзя копировать произвольные объекты через memcpy.
- Ресайз не работает в сторону уменьшения.
- Все тесты на гарантии исключений попадали.
5/10
Note: See
TracTickets for help on using
tickets.
my_vector.h должен инклюдить my_vector_impl.h. Чтобы вызывающему коду достаточно было заинклюдить my_vector.h и всё заработало.
Код не скомпилировался в итоге. Нельзя заполнять и копировать вектор из произвольных элементов используя
memcpy
иmemset
. Эти функции копируют голые байты. Представь, что класс T аллоцирует память в конструкторе и освобождает в деструкторе, а ты через memcpy объект этого класса скопировал. Получишь double free когда оба объекта вызовут свои деструкторы.Корректность пока проверить не могу -- код для вектора произвольного типа просто не скомпилировался из-за
memset
вresize
.Прочие замечания:
capacity
. У тебя capacity должен быть минимально необходимой степенью двойки. У тебя это не для reserve и конструктора от n не выполняется.