38 template <
typename InputIterator>
39 dict(InputIterator first, InputIterator last);
41 dict(std::initializer_list<std::pair<Key, Val>> l);
47 std::size_t size(
void)
const;
54 std::vector<Key> keys(
void)
const;
61 std::vector<Val> vals(
void)
const;
68 bool has_key(
const Key& key)
const;
76 const Val& get(
const Key& key,
const Val& other)
const;
83 const Val& get(
const Key& key)
const;
90 void set(
const Key& key,
const Val& val);
99 const Val& operator[](
const Key& key)
const;
107 Val& operator[](
const Key& key);
129 Val pop(
const Key& key);
146 void update(
const dict<Key, Val>& new_dict,
bool fail_on_conflict =
true);
150 operator std::map<Key, Val>()
const;
153 typedef std::pair<Key, Val> pair_t;
154 std::list<pair_t> _map;