Яковлев М.Я., мехмат МГУ. "Умные" указатели: деструктор списка с ними, снова о weak_ptr

Поделиться
HTML-код
  • Опубликовано: 4 янв 2025

Комментарии • 7

  • @romanpr6691
    @romanpr6691 Месяц назад +1

    Во такой вопрос: проектор выгорает больше когда на экране черный или когда белый?

    • @m.ya.yakovlev
      @m.ya.yakovlev  Месяц назад

      Честно говоря, не знаю. И не очень мне нравится сама идея, что преподаватель на занятии должен думать ещё и о том, как экономить ресурс проектора - вместо того, чтобы сосредоточиться на предмете и на студентах.

  • @kunak1197
    @kunak1197 Месяц назад +1

    А это не оверкил использовать shared_ptr для двусвязного списка? Ведь можно unique_ptr для next, а raw pointer для previous🤔

    • @m.ya.yakovlev
      @m.ya.yakovlev  Месяц назад

      Строго говоря, на практике почти никому и не придётся руками реализовывать список - а если кому и придётся, то почти наверняка с помощью "сырых" указателей и ручного выделения/освобождения памяти.
      Но цель этих задач, которые мы даём студентам - чтобы они изучили "умные" указатели, причём все три. Поэтому я о таком и рассказываю.

    • @kunak1197
      @kunak1197 Месяц назад +1

      @@m.ya.yakovlev Это понятно. Но имхо в учебных целях есть более интересная задача использования shared_ptr и weak_ptr для кэширования без вытеснения. Внутри функции или класса храним unordered_map (для функции как static), где value - это weak_ptr. Если входной ключ не найден в этом map, то создаëм shared_ptr на кэшируемое value и вставляем с этим ключом в map, но возвращаем shared_ptr. А если ключ найден, то достаëм weak_ptr, делаем lock() и возвращаем shared_ptr.

    • @m.ya.yakovlev
      @m.ya.yakovlev  Месяц назад

      @@kunak1197 Это что-то сложное, я сам до конца не понял условие вашей задачи - и не стал бы давать такое студентам. После списков у них будет отдельная задача на деревья поиска, а потом ещё одна - на хеш-таблицы.

  • @romanpr6691
    @romanpr6691 Месяц назад

    Первый