Требуется ответить на 10 вопросов по распаду углеродных изотопов. Все необходимые данные предоставлены в документе. Необходимо выполнить несложные расчёты за 3-4 часа. Задача подходит для студентов химических, физических или геологических специальностей.
STL-контейнер Smart Pointers
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.
В этой задаче необходимо реализовать аналоги шаблонов std::shared_ptr и std::weak_ptr.
SharedPtr
Необходимо реализовать класс SharedPtr<T>
, который должен содержать следующие методы:
(За описанием работы методов можно обращаться к cppref)
Конструкторы
SharedPtr() - по умолчанию
SharedPtr(Y* ptr) - конструктор от c-style указателя. Может быть как указатель на T, так и указатель на наследника T
SharedPtr(const SharedPtr&) - конструктор копирования
SharedPtr(SharedPtr&&) - move-конструктор
SharedPtr(Y* ptr, Deleter), где Y - либо T либо наследник T. Deleter - класс в котором есть
operator()(Y*)
. Этот оператор нужно вызывать вместо уничтожения объекта под шаредом (освобождение памяти делать не нужно).SharedPtr(Y* ptr, Deleter, Alloc), где Alloc - пользовательский аллокатор. Этот аллокатор используется для создания сущностей в динамической памяти, которые нужны для работы шареда. Аллокатор не должен применяться к уничтожению и освобождению ресурса (за это отвечает Deleter).
operator=(const SharedPtr&) - оператор присваивания копированием
operator=(SharedPtr&&) - оператор присваивания перемещением
Деструктор - если при смерти шаред обнаруживает, что пора уничтожать объект, но объект на самом деле типа Y, где Y наследник T, то объект должен быть уничтожен как Y. При этом если был передан кастомный Deleter то объект должен быть уничтожен с помощью него.
use_count - возвращает количество шаредов владеющих объектом.
Метод get для получения c-style указателя
операторы * и ->
Метод reset()
Note Шаред на родителя можно инициализировать шаредом на наследника. Это относится и к конструкторам и к операторам присваивания.
Note Alloc и Deleter это НЕ шаблонные параметры шареда. Унесите их в ControlBlock
Вне класса необходимо реализовать следующие функции:
MakeShared - создает SharedPtr из аргументов. Эта функция должна обращаться к new ровно 1 раз. Не забудьте про форвардинг аргументов
AllocateShared - делает то же что и MakeShared но с кастомным аллокатором. Этот же аллокатор должен быть использован для уничтожения и освобождения памяти под объект и под сущности шареда.
WeakPtr
Необходимо реализовать класс WeakPtr<T>
, который должен содержать следующие методы:
Конструкторы
WeakPtr()
WeakPtr(const WeakPtr&)
WeakPtr(const SharedPtr&)
WeakPtr(WeakPtr&&)
operator=(const WeakPtr&) - оператор присваивания копированием
operator=(WeakPtr&&) - оператор присваивания перемещением
Деструктор
expired - возвращает True если объект под виком все еще валиден (на него есть шаред)
lock - возвращает SharedPtr на объект (если объект еще жив, иначе UB).
Код будет проходить уже установленные тесты и нужно, чтобы он также прошел по кодстайлу (snake_case). Ничем нельзя пренебрегать. Нужно сделать за день.
- Похожие заказы
- Контрольные, Задачи и Тесты3 заявкиЗакрытгод назад
Необходима помощь с тестом по математической логике и теории алгоритмов в реальном времени 18 сентября в 13:30 по мск. Примерные задания будут предоставлены заранее.
Контрольные, Задачи и Тесты2 заявкиЗакрытгод назадПредлагаются две контрольные работы по химии для 10 класса. Задачи и тесты помогут оценить уровень знаний учеников и подготовиться к экзаменам.
Контрольные, Задачи и Тесты15 заявокЗакрытгод назадНеобходимо выполнить 4 учебных тикета по Angular. Работа займет 2-3 дня для разработчика с опытом. Задания и шаблон репозитория будут предоставлены.
Контрольные, Задачи и Тесты2 заявкиЗакрытгод назадНеобходимо сформировать произвольный массив точек в двумерной плоскости и рассчитать ротор и циркуляцию относительно одной из точек. Векторное поле задано линейным уравнением (ах + by + c). Ожидается подробный расчет и представление результатов.
Контрольные, Задачи и Тесты1 исполнительЗавершенгод назадПройдите дистанционный экзамен по строительству. Включает контрольные задания и тесты. Экзамен состоится 5 августа в 10:00, продолжительность - 1,5 часа. Материалы для подготовки предоставлены во вложении.
Контрольные, Задачи и Тесты1 исполнительЗакрытгод назадЗдійсніть оцінку складності тесту з інформатики для учня та допоможіть покращити його знання. Очікується довготривалий процес репетиторства для досягнення кращих результатів.
Контрольные, Задачи и Тесты3 заявкиЗакрытгод назадИщется фрилансер для помощи абитуриенту на онлайн экзамене по математике 22 июля с 10:00. Необходимо быть онлайн в течение 1.5 часов во время теста. Задачи относятся к школьной программе. Бюджет ограничен, возможна гибкость в оплате.
Контрольные, Задачи и Тесты2 заявкиЗакрыт2 года назадТребуется помощь в сдаче экзамена магистратуры по сетевым технологиям, вычислительной технике и информационным технологиям. На экзамене будет 15 вопросов, на которые необходимо ответить в течение 1,5 часов. Вопросы будут отправлены в мессенджере, требуется подготовить ответы на варианты или письменные ответы.
Контрольные, Задачи и Тесты1 исполнительЗакрытгод назад