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

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

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





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


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

Исходники:
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
В игре Source SDK
Забаненный
Статус
Оффлайн
Регистрация
10 Янв 2017
Сообщения
2,148
Реакции[?]
806
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
1) Используй std::allocator для аллоцирования памяти.
2) Называй нормально члены - m_Name / m_pName - ptr (optional)
3) Желательно return &used;
 
Участник
Статус
Оффлайн
Регистрация
23 Фев 2017
Сообщения
613
Реакции[?]
507
Поинты[?]
0
1) Используй std::allocator для аллоцирования памяти.
2) Называй нормально члены - m_Name / m_pName - ptr (optional)
3) Желательно return &used;
1) Зачем?
2) код читаем и понятен без этого
3) зачем? Если установят длину больше чем выделено, то могут возникнуть ошибки
 
В игре Source SDK
Забаненный
Статус
Оффлайн
Регистрация
10 Янв 2017
Сообщения
2,148
Реакции[?]
806
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
1) Зачем?
2) код читаем и понятен без этого
3) зачем? Если установят длину больше чем выделено, то могут возникнуть ошибки
1) Так лучше
2) Есть стандарты
3) Нехуя не будет
 
В игре Source SDK
Забаненный
Статус
Оффлайн
Регистрация
10 Янв 2017
Сообщения
2,148
Реакции[?]
806
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Участник
Статус
Оффлайн
Регистрация
23 Фев 2017
Сообщения
613
Реакции[?]
507
Поинты[?]
0
Участник
Статус
Оффлайн
Регистрация
23 Фев 2017
Сообщения
613
Реакции[?]
507
Поинты[?]
0
Код:
если функция length вернет ссылку, то что же будет плохого? А вот - 
Array array;
array[0] = 1;
int& url_ = array.length();
cout << array.length() << endl; // cout: 1
url_ = 10;
cout << array.length(); //cout 10
 
Начинающий
Статус
Оффлайн
Регистрация
10 Май 2018
Сообщения
12
Реакции[?]
7
Поинты[?]
0
Если писать такой класс чисто для того, чтобы саморазвиться и разобраться в том как работает данный класс, то нормально, а вот с другой стороны - не надо изобретать колесо, когда его до тебя изобрели, твой самописный класс вектора будет скорее всего сосать в скорости в сравнении с stl::vector
 
Начинающий
Статус
Оффлайн
Регистрация
13 Май 2018
Сообщения
5
Реакции[?]
0
Поинты[?]
0
Зачем изобретать свои велосипеды, если есть уже готовый std::vector?
Понять как работает изнутри конечно нужно и интересно, но по факту - бесполезно.
 
Сверху Снизу