Change History (6)

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

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

Программа твоя ловит сегфолты и ошибки валгринда на insert и erase (путаешь порядок аргументов memcpy), а вообще эти функции должны работать без выделения дополнительной памяти.

MyVector::reserve должна выделять дополнительную память, а не просто изменять переменную _cp. Если у твоего вектора вызвать v.reserve(10), а затем сделать три раза push_back, то получится сегфолт. То же самое с resize.

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

UPD:

эти функции должны работать без выделения дополнительной памяти

Имеется ввиду, без выделения дополнительной памяти, если вектору не нужно расширяться.

comment:3 Changed 3 years ago by Станислав Михайлов

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

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

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

По корректности нет замечаний.
По стилю:

  1. В push_back почти дословная копи-паста из reserve, можно переиспользовать
  2. Вот тут можно использовать тернарный оператор, будет смотреться лаконичнее:
            if (new_size > _cp * 2) {
                reserve(new_size);
            }
            else {
                reserve(_cp * 2);
            }
    

еще можно использовать функцию std::max (нужно подключить <algorithm>:

reserve(std::max(new_size, _cp * 2));
  1. Когда у тебя возникает ситуация в коде, что при выполнении условия функция должна выполнять код, а в противном случае не делать ничего, то вместо конструкции
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

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

Upd: решил за копипасту reserve в push_back балл не снижать
10/10

comment:6 Changed 3 years ago by Станислав Михайлов

Спасибо)
Буду стараться избегать избегать таких ошибок

Note: See TracTickets for help on using tickets.