Нужно ответить на 10 вопросов по Carbon isotopes decay. Вопросы и текст задания на Английском языке. Писать особо ничего не нужно в основном ответ на каждый вопрос это несложные расчёты. Все что нужно ...
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 заявкиЗакрыт7 месяцев назад
В понедельник (18.09) в 13:30 по мск нужно помочь с тестом в реальном времени, примерные задания в билетах предоставлю
Контрольные, Задачи и Тесты2 заявкиЗакрыт7 месяцев назад2 контрольные по химии за 10 класс
Контрольные, Задачи и Тесты15 заявокЗакрыт7 месяцев назадНужно выполнить 4 учебныйх тикета по ангуляр. Для человека с опытом и пониманием 2-3 дня работы. Работа не большая - кому будет интересно сброшу сами задания и репозиторий как шаблон.
Контрольные, Задачи и Тесты2 заявкиЗакрыт8 месяцев назадСформировать произвольный массив точек в двухмерной плоскости и расчитать ротор и циркуляцию относительно одной из точек массива. Векторное поле задано линейным уравнением (ах +by + c)
Контрольные, Задачи и Тесты1 исполнительЗавершен8 месяцев назадПройти дистанционный экзамен, вступительный тест по Строительству, материалы во вложении, время - 5 августа 10.00, дается 1,5 часа
Контрольные, Задачи и Тесты1 исполнительЗакрыт9 месяцев назадДоброго дня. Прошу оцінити складність тесту з інформатики мого сина і зрозуміти, чи зможете Ви підтягнути її знання і розуміння теми для виконання аналогічних тестів. Припускаю, що процес репетиторства буде довгим. Заздалегідь дякую!
Контрольные, Задачи и Тесты3 заявкиЗакрыт9 месяцев назадОнлайн экзамен по математике, необходимо подстраховать абитуриента на случай сложностей. 22 июля с 10:00 + 1.5 часа То есть, вам необходимо быть онлайн у компьютера на время теста. Школьная программа. Бюджет ограничен. Так как "подстраховать" ...
Контрольные, Задачи и Тесты2 заявкиЗакрыт10 месяцев назадНужна помочь в сдаче экзамена в магистратуру по темам: https://abitur.mtuci.ru/upload/iblock/7cc/Programma.VI.Mag_09.04.01_2023.pdf (сетевые технологии, вычислительная техника и информационные технологии) На экзамене будет 15 вопросов, ответы на вопрос в виде вариантов на ответ или письменный ответ Вопросы будут отправляться ...
Контрольные, Задачи и Тесты1 исполнительЗакрыт9 месяцев назад