Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <map>
- #include <exception>
- #include <algorithm>
- template <typename KEY, typename VALUE>
- class MyMap {
- std::vector<std::pair<KEY, VALUE>> _map;
- public:
- void addByKey(KEY key, VALUE value) {
- for (std::pair<KEY, VALUE> pair : _map) { // Делаем мы это для всех элементов в мэпе, т.е. смотрим, чтобы ключ не был УЖЕ использован
- if (pair.first == key)
- throw std::invalid_argument("Key is already used"); // Если мы в словарь пытаемся добавить данные, по ключу, который УЖЕ ИСПОЛЬЗУЕТСЯ мы кидаем ошибку
- }
- _map.push_back(std::make_pair(key, value)); // Если все норамльно, то в конец словаря добавляется новая пара ключ->значение
- }
- void deleteByKey(KEY key) {
- }
- VALUE& getByKey(KEY key) {
- for (std::pair<KEY, VALUE>& pair : _map) {
- if (pair.first == key)
- return pair.second;
- }
- }
- VALUE& operator[](KEY key) {
- return this->getByKey(key);
- }
- size_t size() {
- return _map.size();
- }
- };
- int main() {
- MyMap<std::string, int> map;
- map.addByKey("Hello", 42);
- map.addByKey("Good", 123);
- map.addByKey("Bad", 42);
- // map.deleteByKey("Hello");
- map["Good"] = 1024;
- std::cout << map["Good"];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement