Opened 4 years ago

Closed 4 years ago

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

WW #12

Reported by: Vavilov Mark Owned by: Дмитрий Свиридкин
Component: WW_vector Version: 3.0
Keywords: Cc:

Description


Change History (5)

comment:1 Changed 4 years ago by Дмитрий Свиридкин

Owner: changed from Дмитрий Свиридкин to Vavilov Mark
Type: ожидается проверкаожидаются исправления

Нет константного оператора []

==11028== Invalid free() / delete / delete[] / realloc()
==11028==    at 0x483BA3F: free (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==11028==    by 0x10DFB5: my_vector<Product>::~my_vector() (my_vector_impl.h:65)

Код, очищающий вектор, дублируется минимум трижды. Его надо вынести в отдельную функцию, а лучше в структуру и переложить ответсвенность за его вызов на ее дуструктор.

   size_t nextPowerOfTwo(size_t n) {
            size_t value = 1;
            while (value <= n)
                value = value << 1;

            return value;
        }

Для n == 2 эта функция вернет 4. Это точно то, что требуется в условии?

resize не работает на уменьшение размера.

my_vector<T>::my_vector(my_vector const &other)
Кто ж вас научил этому самому непопулярному и существующему только в безумном мире C++ варианту размещения const...

comment:2 Changed 4 years ago by Vavilov Mark

Owner: changed from Vavilov Mark to Дмитрий Свиридкин
Type: ожидаются исправленияожидается проверка
Version: 1.02.0

comment:3 Changed 4 years ago by Дмитрий Свиридкин

Owner: changed from Дмитрий Свиридкин to Vavilov Mark
Type: ожидается проверкаожидаются исправления
/home/dmis/DATA/WORKSPACE/cpp-labs/lab_12/check/lab_12/include/my_vector_impl.h:157:43: error: ‘aligned_alloc’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]

Надо подключать заголовки там, где они исплользуются.

В impl не надо подключать исходный заголовок.

       my_vector<T>& operator=(my_vector other);

        my_vector<T>& operator=(my_vector&& other) noexcept;

Эти две сигнатуры не могут ужиться вместе.

А где конструктор перемещения?

в reserve нужено делать move элементов

push_back нарушает строгую гарантию исключений.

comment:4 Changed 4 years ago by Vavilov Mark

Owner: changed from Vavilov Mark to Дмитрий Свиридкин
Type: ожидаются исправленияожидается проверка
Version: 2.03.0

comment:5 Changed 4 years ago by Дмитрий Свиридкин

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

ostream не подключен, а используется

реаллокация в push_back не добивает до степени двойки.

    my_vector<T>::my_vector(const my_vector& other) : h{other.size()} {
        assert(h.array_);

А если захотели копировать пустой?

гарантия, что ненулевая capacity равняется степени двойки, нарушается.


8

Note: See TracTickets for help on using tickets.