Задача: плейлист из общих песен
Напишите класс 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 с названием, которого в плейлисте нет, ничего не меняет.