void put( const key_t &key, const value_t &value){ auto it = cache_map.find(key); if (it != cache_map.end()) { cache_list.erase(it -> second ); cache_map.erase(it); } cache_list.push_front(pair(key, value)); cache_map[key] = cache_list.begin(); if (cache_map.size() > max_size) { auto last = cache_list.end(); last--; cache_map.erase( last -> first ); cache_list.pop_back(); } }