Перейти к содержимому
Задача · Память и умные указатели · урок 12 из 12

Задача: плейлист из общих песен

Напишите класс Playlist — плейлист, который владеет песнями вместе с другими их владельцами; песня — это std::shared_ptr<std::string> на строку с её названием. void add(const std::shared_ptr<std::string>& song) добавляет песню в конец, а void remove(const std::string& name) убирает все песни с названием name. int size() const возвращает число песен, а std::string title(int index) const — название песни под номером index; поля добавьте сами.

intro и rain — песни "Intro" и "Rain", плейлисты mine и yours сначала пусты, и каждый пример продолжает предыдущий:

  • после mine.add(intro), mine.add(intro), mine.add(rain) и yours.add(intro): intro.use_count() → 4
  • после *intro = "Outro": yours.title(0) → "Outro"
  • после mine.remove("Outro"): mine.size() → 1, intro.use_count() → 2

Ограничения: index от 0 до size() - 1, а песня, добавленная несколько раз, столько же раз учитывается в size() и use_count(). Песня остаётся в плейлисте и без других владельцев, а remove с названием, которого в плейлисте нет, ничего не меняет.

owner_count.cpp — cpp
cpp · строк: 21
Ctrl+Enter запуск · Esc выйти из редактора