Opened 3 years ago
Closed 3 years ago
#304 closed ожидается проверка (задача сдана)
WW6
Reported by: | morozov.nikita | Owned by: | Святослав Власов |
---|---|---|---|
Component: | WW_vector_int | 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 |
По корректности:
- В
resize
, если у тебя_sz < new_size < _cp
, то произойдет выделение новой памяти и копирование, а это ни к чему.
По стилю:
- В функции
MyVector::push_back
строчки 83-85 (те, что послеcreate_new_data
) можно просто удалить, они лишние - Функция
create_new_data
мне не нравится. Во-первых, она лишняя, её код можно поместить вMyVector::reserve
и использовать её, а, во-вторых, вспомогательные функции лучше помещать внутрь класса и делать приватными.
В остальном всё хорошо -- 9/10.
Note: See
TracTickets for help on using
tickets.
Такое решение приведет к двойной аллокации и копированию памяти, если
new_size > 2 * _cp
, а этого мы не хотим.:И непонятно, зачем мы в
MyVector::resize
копируем элементы дважды (первый раз вreserve
а второй раз вresize
.И в целом у тебя
resize
не работает.v.size()
возвращает одно и то же как доv.resize(...)
, так и после.MyVector::insert
должен работать без выделения дополнительной памяти, еслиcapacity
хватает.У тебя очень много копипасты в
reserve
,resize
,push_back
иinsert
. Подумай, как можно побольше переиспользовать код.Ловишь сегфолт на вот таком тесте: