大家用了stl的list后都知道,他的节点在内存中的位置是固定的,但是当删除或查找某个指定节点时需要遍历,这样当list很大时,这个遍历过程未免有些性能诟病。当然大家会很容易想到hash_map,但是hash_map在节点数超过一定数量后也会进行“扩容”操作,这样存在大量的对象的搬迁。我们看看list的特点:结构简单,节点的内存地址固定,添加删除操作快捷;再看看hash_map的特点:查找速度快,节点的内存地址可能不固定(依赖是否扩容),如果我们将两者结合可以解决某些特殊应用场合(指那些可能需要记录节点内存位置的场合)。用一个list和一个hash_map来管理一个数据列表,list记录具体的节点的数据,hash_map用于记录list的迭代器地址,这样需要查找一个键值为key的对象在list中的节点时,可以通过hash_map来进行定位,具体性能如何没有测试过,应该不会比list的直接遍历查找慢,大家可以自己试试。