Opened 4 years ago

Closed 4 years ago

#847 closed ожидаются исправления (задача сдана)

WW #12

Reported by: savrasov.mikhail Owned by: savrasov.mikhail
Component: WW_vector Version: 1.0
Keywords: Cc:

Description


Change History (2)

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

Owner: changed from Дмитрий Свиридкин to savrasov.mikhail
Type: ожидается проверкаожидаются исправления
src/main.cpp:863:27:   required from here
include/my_vector_impl.h:183:41: error: ‘malloc’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
  183 |    T* new_array = static_cast<T*>(malloc(n * sizeof(T)));
      |                                   ~~~~~~^~~~~~~~~~~~~~~

Подключать заголовки надо там, где вы используете их содержимое. У вас компилируется только потому, что в main my_Vector.h подключен после чего-то, подключившего malloc.h
В *_impl.h не надо подключать исходный заголовок.

чтобы не специфицировать namespace у каждого метода, лучше завернуть их определения все разом в namespace my_vector { .... }

	catch(...)
	{
		throw;
	}

И зачем?

void my_vector::my_vector<T>::push_back(const T &&t)
Не получится у вас тут помувать

push_back(T(std::move(nw[i]))); Зачем тут еще один вызов конструктора?

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

Вместо переноса push_backами, сделайте swap указателей. А лучше пусть это сделает оператор или конструктор перемещения.

В reserve надо делать move.

В конструкторе my_vector::my_vector<T>::my_vector(size_t n) деструктор вспомогательного вектора ничего не очистит.

Оператор присваивания нарушает строгую гарантию исключений.

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

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

5

Note: See TracTickets for help on using tickets.