#301 closed ожидается проверка (задача сдана)
WW #6
Reported by: | Станислав Михайлов | Owned by: | Святослав Власов |
---|---|---|---|
Component: | WW_vector_int | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (6)
comment:1 Changed 3 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 3 years ago by
UPD:
эти функции должны работать без выделения дополнительной памяти
Имеется ввиду, без выделения дополнительной памяти, если вектору не нужно расширяться.
comment:3 Changed 3 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:4 Changed 3 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
По корректности нет замечаний.
По стилю:
- В
push_back
почти дословная копи-паста изreserve
, можно переиспользовать - Вот тут можно использовать тернарный оператор, будет смотреться лаконичнее:
if (new_size > _cp * 2) { reserve(new_size); } else { reserve(_cp * 2); }
еще можно использовать функцию std::max
(нужно подключить <algorithm>
:
reserve(std::max(new_size, _cp * 2));
- Когда у тебя возникает ситуация в коде, что при выполнении условия функция должна выполнять код, а в противном случае не делать ничего, то вместо конструкции
void foo() { if (condition) { ... do something ... ... many lines of code... ... many lines of code... ... many lines of code... } }
лучше писать
void foo() { if (!condition) return; ... do something ... ... many lines of code... ... many lines of code... ... many lines of code... }
Не стоит увеличивать вложенность без необходимости.
В остальном всё ок. 9/10
Note: See
TracTickets for help on using
tickets.
Программа твоя ловит сегфолты и ошибки валгринда на
insert
иerase
(путаешь порядок аргументовmemcpy
), а вообще эти функции должны работать без выделения дополнительной памяти.MyVector::reserve
должна выделять дополнительную память, а не просто изменять переменную_cp
. Если у твоего вектора вызватьv.reserve(10)
, а затем сделать три разаpush_back
, то получится сегфолт. То же самое сresize
.