基本思想需要O(1)时间的插入删除,必须要一个map,此外需要判断时间,那么还需要一个双链表。如果自己实现双链表,会很麻烦,可以直接使用list。需要设置一个节点类型,Node{k,v},list存储Node*指针。注意必须要有k,方便后续删除最后一个节点的时候,根据k去删除map。接下来就是map了,注意这里的value需要指向list中的元素的位置,因此不能是Node*,这样会没法直接定位到链表的节点,需要 list<Node*>::iterator 存储一个迭代器,这样*解引用就可以指向那个被访问的list节点了,方便插入和删除。核心结构如下 struct Node { i...