Opened 4 years ago

Closed 4 years ago

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

WW #12

Reported by: fedorov.vladimir 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 fedorov.vladimir
Type: ожидается проверкаожидаются исправления

лучше завернуть всю имплементацию в namespace, чем указывать его в определениии каждого метода.

static int getTwoPow(int n) {
    double tmp = static_cast<double>(n);

Ну и зачем вам тут плавающая точка? Делите в целых числах. А лучше умножайте.

Оператор присваивания ломает size.

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

comment:2 Changed 4 years ago by fedorov.vladimir

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

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

Owner: changed from Дмитрий Свиридкин to fedorov.vladimir
Type: ожидается проверкаожидаются исправления
include/my_vector_impl.h:57:9: error: cannot convert ‘my_vector::my_vector<int>’ to ‘my_vector::my_vector<int>::vector_impl&’
   57 |         holder.swap(other);
      |         ^~~~~~
include/my_vector_impl.h:27:55: note:   initializing argument 1 of ‘void my_vector::my_vector<T>::vector_impl::swap(my_vector::my_vector<T>::vector_impl&) [with T = int]’
   27 |     void my_vector<T>::vector_impl::swap(vector_impl& other) {

void my_vector<T>::push_back(const T &t) {
 if (holder.size_ == holder.capacity_ || holder.capacity_ == 1) {

Зачем здесь второе условие? Будет реаллокация пустого вектора с capacity == 1 -- а это неправильно.

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

Оператор вывода выводит лишний пробел.

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

while((capacity - 1) & capacity) {
            capacity++;
        }

У вас пока самая медленная добивка до степени двойки. Попробуйте еще раз.

comment:4 Changed 4 years ago by fedorov.vladimir

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

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

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

pop_back можно сделать методом impl и переисполь в деструкторе, clear, resize


9.8

Note: See TracTickets for help on using tickets.