Розмістіть свій проєкт безплатно та почніть отримувати пропозиції від фрилансерів-виконавців уже через хвилини після публікації!
Напишіть невелику програму на C++
Проєкт перекладено автоматично. Увійдіть або зареєструйтесь, щоб побачити оригінал
Реалізувати шаблон класу Buyer, параметризований типом Product, який служить ідентифікатором для кожного продукту.Для типу Product обіцяно реалізувати конструктор копій (і оператор присвоєння), деструктор, оператори порівняння і std::hash.Клас Buyer повинен реалізувати наступні публічні методи:
* size_t products() const - повертає кількість зареєстрованих видів товарів (тобто.не кількість проданих одиниць),
* void sell(const Product & p, size_t amount), - в якому відображається продаж amount товарів p
* size_t rank(const Product& p) const, - який повертає кількість разів, коли найпродаваніший товар прономерований від 1 (якщо кілька товарів продаються однаково, ви можете класифікувати їх у будь-який спосіб)
* const Product& product(size_t rank) const зворотна функція до rank (тобто.до тих пір, поки не відбудеться виняток, завжди виконується product(rank(p)) == p a rank(product(r)) == r)
* size_t sold(size_t r) const - кількість проданих одиниць r-го найбільш продаваного продукту
* size_t sold(size_t from, size_t to) const - аналогічна однопараметричній версії, але повертає суму проданих одиниць за інтервал від і до (включаючи обидва країни; таким чином sold(r, r) == sold(r) a sold(1, products()) - це загальна кількість проданих одиниць за усіма видами товарів; введення to < from вважається недійсним.* size_t first_same(size_t r) const a size_t last_same(size_t r) повертають найменший (згідно найбільший) rank r', для якого sold(r') == sold(r)
Якщо аргументи виклику неприйнятні (тобто.rank виходить за межі або невідоме творіння в методі rank ), викликати виключення std::out_of_range.