Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

[C++] Класс вектора своими руками.

Участник
Участник
Статус
Оффлайн
Регистрация
23 Фев 2017
Сообщения
612
Реакции
504
Наверное, каждый человек, который не просто пастил код, а именно что-то разрабатывал, использовал векторы (vector -
Пожалуйста, авторизуйтесь для просмотра ссылки.
) хотел бы избавиться от push_back или прочего не удобного (ну или просто понять как работает этот класс). Начнем написание класса с создания всего самого нужного, а далее разработка будет зависеть только от вашей фантазии.

1) Как выглядит header:
Ho6KTwK.png
2) Реализация, на каждом скрине будут комментарии в виде описания работы
J29lZN2.png

ovFRRVx.png

kQSkSzS.png

RzUFc3g.png

sTDJ5yX.png

Внимание!
Прошу сделать акцент на лямбда-функцию:
fd38UTL.png


Это сокращенная запись функции сравнивания, таким образом, если пользователю не нужны доп. условия, то он получит просто индекс минимального.
Код:
Expand Collapse Copy
 [пусто здесь] (аргументы) -> ТИП { тело функции}
el3kO0y.png
(
Пожалуйста, авторизуйтесь для просмотра ссылки.
)

Исходники:
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
1) Используй std::allocator для аллоцирования памяти.
2) Называй нормально члены - m_Name / m_pName - ptr (optional)
3) Желательно return &used;
 
1) Используй std::allocator для аллоцирования памяти.
2) Называй нормально члены - m_Name / m_pName - ptr (optional)
3) Желательно return &used;
1) Зачем?
2) код читаем и понятен без этого
3) зачем? Если установят длину больше чем выделено, то могут возникнуть ошибки
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
1) Зачем?
2) код читаем и понятен без этого
3) зачем? Если установят длину больше чем выделено, то могут возникнуть ошибки
1) Так лучше
2) Есть стандарты
3) Нехуя не будет
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
Expand Collapse Copy
если функция length вернет ссылку, то что же будет плохого? А вот - 
Array array;
array[0] = 1;
int& url_ = array.length();
cout << array.length() << endl; // cout: 1
url_ = 10;
cout << array.length(); //cout 10
 
Если писать такой класс чисто для того, чтобы саморазвиться и разобраться в том как работает данный класс, то нормально, а вот с другой стороны - не надо изобретать колесо, когда его до тебя изобрели, твой самописный класс вектора будет скорее всего сосать в скорости в сравнении с stl::vector
 
Зачем изобретать свои велосипеды, если есть уже готовый std::vector?
Понять как работает изнутри конечно нужно и интересно, но по факту - бесполезно.
 
Назад
Сверху Снизу