С++. Создать классы Item (предмет), Property (свойство) и Bag (мешок).
В классе Item использовать классы unordered_map - для хранения множества пар - (название свойства (string), объект класса Property), реализовать поле для Названия (string).
В классе Property - реализовать поля для Названия (string) и множества описаний (string) (контейнер - на ваше усмотрение, vector, deque..).
В классе Bag использовать класс unordered_multmap для хранения пар - (название предмета(string), объект класса Item), а также класс unordered_set - для хранения списка уникальных названий предметов. Реализовать методы для добавления и извлечения предметов из мешка (объект Bag).
При добавлении и извлечении предметов из мешка должен автоматически корректироваться список уникальных названий предметов.