Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.53 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <map>
  4. #include <exception>
  5. #include <algorithm>
  6.  
  7. template <typename KEY, typename VALUE>
  8. class MyMap {
  9.     std::vector<std::pair<KEY, VALUE>> _map;
  10.  
  11. public:
  12.     void addByKey(KEY key, VALUE value) {
  13.         for (std::pair<KEY, VALUE> pair : _map) { // Делаем мы это для всех элементов в мэпе, т.е. смотрим, чтобы ключ не был УЖЕ использован
  14.             if (pair.first == key)
  15.                 throw std::invalid_argument("Key is already used"); // Если мы в словарь пытаемся добавить данные, по ключу, который УЖЕ ИСПОЛЬЗУЕТСЯ мы кидаем ошибку
  16.         }
  17.         _map.push_back(std::make_pair(key, value)); // Если все норамльно, то в конец словаря добавляется новая пара ключ->значение
  18.     }
  19.     void deleteByKey(KEY key) {
  20.  
  21.     }
  22.  
  23.     VALUE& getByKey(KEY key) {
  24.         for (std::pair<KEY, VALUE>& pair : _map) {
  25.             if (pair.first == key)
  26.                 return pair.second;
  27.         }
  28.     }
  29.  
  30.     VALUE& operator[](KEY key) {
  31.         return this->getByKey(key);
  32.     }
  33.  
  34.     size_t size() {
  35.         return _map.size();
  36.     }
  37. };
  38.  
  39. int main() {
  40.     MyMap<std::string, int> map;
  41.     map.addByKey("Hello", 42);
  42.     map.addByKey("Good", 123);
  43.     map.addByKey("Bad", 42);
  44.    // map.deleteByKey("Hello");
  45.  
  46.    map["Good"] = 1024;
  47.  
  48.     std::cout << map["Good"];
  49.  
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement