Opened 3 years ago

Closed 3 years ago

#353 closed ожидается проверка (задача сдана)

WW #7

Reported by: movsin.marat Owned by: Святослав Власов
Component: WW Matrix Version: 3.0
Keywords: Cc:

Description


Change History (5)

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

Type: ожидается проверкаожидаются исправления
  1. Ловишь сегфолты в операторе присваивания. Там ты освобождаешь память не так, как выделил.
  2. Ловишь сегфолты в операторе сравнения (размеры матриц могут не совпадать и это корректный случай)
  3. Хочется чтобы программа падала по ассертам, а не просто сегфолтилась, если размеры матриц не соответствуют друг другу в операторах
  4. Зачем вот так писать? this->operator==(m)? Можно же просто *this == m
  5. В Matrix::print не надо писать тело цикла на той же строке
  6. Ты реализуешь присваивающие операторы (+=,-=,*=) через неприсваивающие (+,-,*), это ведет к лишним аллокациям и копированию памяти (сначала при создании временной матрицы, а потом при присваивании временной матрицы в *this. Это вредит производительности. Можно либо написать собственную реализацию, либо реализовать неприсваивающие операции через присваивающие и временную матрицу.

comment:2 Changed 3 years ago by movsin.marat

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

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

Type: ожидается проверкаожидаются исправления
  1. Не надо вот так писать (*this).lin_comb(m, -1);. Для вызова методов у объекта по указателю есть оператор ->: this->lin_comb(m, -1);, а вообще тут и этого не нужно, ты хочешь вызвать метод у этого же самого объекта -- можешь просто вызвать его по имени lin_comb(m, -1);.
  2. operator*= делает лишнее копирование. У тебя сначала создается временный объект в результате умножения, а потом этот временный объект через оператор присваивания копируется в *this, этого копирования можно избежать.
  3. Давай избавимся от копи-пасты в конструкторе копирования и операторе присваивания. Например, через swap-trick.
  4. у тебя есть memcpy и memset, ими можно скопировать или заполнить элементы намного быстрее, чем в цикле.
  5. В некоторых местах съехали отступы. У тебя в отступах намешана табуляция и пробелы. Видимо ты либо откуда-то куски кода копировал, либо в разных редакторах его писал. У меня стоит длина отступа 2 пробела, поэтому всё съехало. Исправь.

Пока 7.5/10

comment:4 Changed 3 years ago by movsin.marat

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

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

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

10/10

Note: See TracTickets for help on using tickets.