Advertisement
chevengur

СПРИНТ № 9 | Ассоциативные контейнеры | Урок 3: Ускоряем, отказываясь от сортировки

Aug 6th, 2024 (edited)
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <cassert>
  5.  
  6. using namespace std;
  7.  
  8. class MoneyBox {
  9. public:
  10.     explicit MoneyBox(vector<int64_t> nominals)
  11.         : nominals_(move(nominals))
  12.         , counts_(nominals_.size()) {
  13.     }
  14.  
  15.     const vector<int>& GetCounts() const {
  16.         return counts_;
  17.     }
  18.  
  19.     int FindCoin(int64_t value)
  20.     {
  21.        return find(nominals_.begin(), nominals_.end(), value) - nominals_.begin();
  22.     }
  23.  
  24.     void PushCoin(int64_t value) {
  25.          
  26.         // реализуйте метод добавления купюры или монеты
  27.         ++counts_[FindCoin(value)];
  28.        
  29.     }
  30.  
  31.     void PrintCoins(ostream& out) const {
  32.         for (int i = 0; i < counts_.size(); ++i) {
  33.             if (counts_[i] > 0) {
  34.                 out << nominals_[i] << ": "s << counts_[i] << endl;
  35.             }
  36.         }
  37.     }
  38.  
  39. private:
  40.     const vector<int64_t> nominals_;
  41.     vector<int> counts_;
  42. };
  43.  
  44. ostream& operator<<(ostream& out, const MoneyBox& cash) {
  45.     cash.PrintCoins(out);
  46.     return out;
  47. }
  48.  
  49. int main() {
  50.     MoneyBox cash({1, 500, 10000});
  51.     cash.PushCoin(500);
  52.     cash.PushCoin(500);
  53.     cash.PushCoin(10000);
  54.     std::cout << cash.FindCoin(10000);
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement