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: | ожидается проверка → ожидаются исправления |
comment:2 Changed 4 years ago by
Owner: | changed from fedorov.vladimir to Дмитрий Свиридкин |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 1.0 → 2.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
Owner: | changed from fedorov.vladimir to Дмитрий Свиридкин |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 2.0 → 3.0 |
comment:5 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
pop_back можно сделать методом impl и переисполь в деструкторе, clear, resize
9.8
Note: See
TracTickets for help on using
tickets.
лучше завернуть всю имплементацию в namespace, чем указывать его в определениии каждого метода.
Ну и зачем вам тут плавающая точка? Делите в целых числах. А лучше умножайте.
Оператор присваивания ломает size.
Код, который очищает вектор повторяется минимум четырежды. Создающий новый буфер -- тоже.
Его можно вынести в отдельную функцию. А лучше в структуру и переложить на ее дуструктор заботу об очистке в любой непонятной ситуации.