Samchon Framework for CPP  1.0.0
TreeMap.hpp
1 #pragma once
2 #include <map>
3 
4 namespace samchon
5 {
86  template <typename _Kty, typename _Ty, typename _Pr = std::less<_Kty>, typename _Alloc = std::allocator<std::pair<const _Kty, _Ty>>>
87  class TreeMap
88  : public std::map<_Kty, _Ty, _Pr, _Alloc>
89  {
90  private:
91  typedef std::map<_Kty, _Ty, _Pr, _Alloc> super;
92 
93  //PROHIBIT ACCESS TO AT
94  auto at(const _Kty &) -> _Ty& = delete;
95  auto at(const _Kty &) const -> const _Ty& = delete;
96 
97  public:
98  using super::super;
99 
109  auto has(const _Kty &key) const -> bool
110  {
111  return count(key) != 0;
112  };
113 
128  auto get(const _Kty &key) -> _Ty&
129  {
130  return find(key)->second;
131  };
132  auto get(const _Kty &key) const -> const _Ty&
133  {
134  return find(key)->second;
135  };
136 
149  void set(const _Kty &key, const _Ty &val)
150  {
151  iterator it = find(key);
152  if (it != end())
153  erase(it);
154 
155  insert({ key, val });
156  };
157  void set(const _Kty &key, const _Ty &&val)
158  {
159  iterator it = find(key);
160  if (it != end())
161  erase(it);
162 
163  insert({ key, val });
164  };
165 
172  auto pop(const _Kty &key) -> _Ty
173  {
174  iterator it = find(key);
175  _Ty val = it->second;
176 
177  erase(it);
178 
179  return val;
180  };
181  };
182 };
auto pop(const _Kty &key) -> _Ty
Pop item.
Definition: TreeMap.hpp:172
Customized std::map.
Definition: TreeMap.hpp:87
auto has(const _Kty &key) const -> bool
Whether have the item or not.
Definition: TreeMap.hpp:109