Opened 4 years ago

Closed 4 years ago

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

WW #12

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

my_vector::my_vector<T>::my_vector_holder::my_vector_holder(std::size_t n)

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

namespace my_vector {
 my_vector<T>::my_vector_holder::my_vector_holder(std::size_t n){...}
 ...

}

//#include "my_vector_impl.h" этот "заголовок" и должен был тут подключаться. А уже в нем не нужно подключать "my_vector.h" и писать include guards. Это стандартная практика для разделения реализации шаблонов.

reinterpret_cast<T*>(new char[n * sizeof(T)])

Используйте malloc или aligned_alloc. Для new не гарантировано, что выделенная память будет выравнена так, что подойдет для любого объекта.

new (newh.array_ + newh.size_) T Добавьте скобки, а то какой-нибудь int создастся неинициализированным https://stackoverflow.com/a/620217

resize не сработает, если n > size && n < capacity
Зачем resize пепревыделяет память, когда нужно уменьшить размер?
Также можно избежать дублирования кода, если реализовать resize с помощью pop/push

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

Last edited 4 years ago by Дмитрий Свиридкин (previous) (diff)

comment:2 Changed 4 years ago by Obryadina Alexandra

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

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

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

clear приводит к UB

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

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

comment:4 Changed 4 years ago by Obryadina Alexandra

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

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

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

resize все еще нарушает строгую гарантию исключений:

Если конструктор T по умолчанию кинет исключение, нужно откатывать move элементов и вызывать деструкторы у успешно созданных объектов.


8

Note: See TracTickets for help on using tickets.