Opened 3 years ago

Closed 3 years ago

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

WW_vector Tyuryaev lab_11

Reported by: tyuryaev.ilya Owned by: Антон Филатов
Component: WW_vector Version: 3.0
Keywords: Cc:

Description


Change History (5)

comment:1 Changed 3 years ago by Антон Филатов

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

Забыли iostream в my_vector.h
И вот эту ошибку надо бы пофиксить в операторе присваивания

include/my_vector_impl.h: In instantiation of ‘containers::my_vector<K>& containers::my_vector<T>::operator=(const containers::my_vector<T>&) [with T = int]’:
src/main.cpp:367:13:   required from ‘void test_copy() [with T = int]’
src/main.cpp:868:24:   required from here
include/my_vector_impl.h:58:16: error: binding reference of type ‘containers::my_vector<int>&’ to ‘const containers::my_vector<int>’ discards qualifiers
         return other;
                ^~~~~
include/my_vector_impl

Тесты проходят не все.
Во-первых, _init_cp должно быть 1, а не 2 - это мелочь, но тем не менее соглашение для пустого вектора именно такое
И когда вы создаёте вектор, например, my_vector<T> vec(10), то size == 10, а capacity == 16 (c reserve это тоже должно работать. Сдлелаи пустой вектор, а потом reserve на 10, capacity должно стать 16)

А тест на resize вообще что-то с сегфолтом выпадает. В этом тесте дается resize(5), потом 15, потом 10, потом 17, потом 0

Стиль:
По стилю всё ок на самом деле.
Предложение есть: не хотите ли своп трик кое-где сделать, чтобы кода поменьше писать

7/10

comment:2 Changed 3 years ago by tyuryaev.ilya

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

comment:3 Changed 3 years ago by Антон Филатов

Type: ожидается проверкаожидаются исправления
In file included from include/my_vector.h:65:0,
                 from src/main.cpp:3:
include/my_vector_impl.h: In instantiation of ‘containers::my_vector<K>& containers::my_vector<T>::operator=(containers::my_vector<T>) [with T = int]’:
src/main.cpp:367:13:   required from ‘void test_copy() [with T = int]’
src/main.cpp:871:24:   required from here
include/my_vector_impl.h:60:14: error: no matching function for call to ‘swap(containers::my_vector<int>&, const containers::my_vector<int>&)’
     std::swap(*this, other);
     ~~~~~~~~~^~~~~~~~~~~~~~

Вот на таком тесте выпадает ассерт:

my_vector<T> vec(10);
    assert(vec.size() == 10);
    assert(vec.capacity() == 16);
    assert(!vec.empty());

    for(size_t i = 0; i < vec.size(); ++i) {
        assert(vec[i] == T());
    }

Тест на копирование иногда выпадает с сегфолтом. Проверьте повнимательнее - если не найдёте, почему - пришлю тест

Кроме того падают тесты на resize и reserve (по-прежнему)

7,5/10

comment:4 Changed 3 years ago by tyuryaev.ilya

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

comment:5 Changed 3 years ago by Антон Филатов

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

Тесты пройдены.
Стиль:

  • неожиданное решение в free_vec передавать экземпляр вектора, если по-сути вы его от this всегда вызываете

9.9/10

Note: See TracTickets for help on using tickets.