Честно говоря, не знаю. И не очень мне нравится сама идея, что преподаватель на занятии должен думать ещё и о том, как экономить ресурс проектора - вместо того, чтобы сосредоточиться на предмете и на студентах.
Строго говоря, на практике почти никому и не придётся руками реализовывать список - а если кому и придётся, то почти наверняка с помощью "сырых" указателей и ручного выделения/освобождения памяти. Но цель этих задач, которые мы даём студентам - чтобы они изучили "умные" указатели, причём все три. Поэтому я о таком и рассказываю.
@@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.
@@kunak1197 Это что-то сложное, я сам до конца не понял условие вашей задачи - и не стал бы давать такое студентам. После списков у них будет отдельная задача на деревья поиска, а потом ещё одна - на хеш-таблицы.
Во такой вопрос: проектор выгорает больше когда на экране черный или когда белый?
Честно говоря, не знаю. И не очень мне нравится сама идея, что преподаватель на занятии должен думать ещё и о том, как экономить ресурс проектора - вместо того, чтобы сосредоточиться на предмете и на студентах.
А это не оверкил использовать shared_ptr для двусвязного списка? Ведь можно unique_ptr для next, а raw pointer для previous🤔
Строго говоря, на практике почти никому и не придётся руками реализовывать список - а если кому и придётся, то почти наверняка с помощью "сырых" указателей и ручного выделения/освобождения памяти.
Но цель этих задач, которые мы даём студентам - чтобы они изучили "умные" указатели, причём все три. Поэтому я о таком и рассказываю.
@@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.
@@kunak1197 Это что-то сложное, я сам до конца не понял условие вашей задачи - и не стал бы давать такое студентам. После списков у них будет отдельная задача на деревья поиска, а потом ещё одна - на хеш-таблицы.
Первый