Cthon中python dict和tr1 :: unordered_map的区别

9 c++ python dictionary tr1 hashmap

我有一个与理解python词典如何工作有关的问题.

我记得在某些地方读取python中的字符串是不可变的以允许散列,这也是为什么不能直接使用列表作为键的原因,即列表是可变的(通过支持.append),因此它们不能用作字典键.

我想知道C++中unordered_map的实现如何处理这些情况.(因为C++中的字符串是可变的)

Tro*_*nic 7

所有C++ map/set容器中的键都是const,因此是不可变的(在添加到容器之后).

请注意,C++容器不是特定于字符串键的,您可以使用任何对象,但是在将键复制到容器后,constness将阻止修改.

  • @Akshay:如果有人这样做,他们会得到他们应得的东西:)`std :: map`是用红黑树实现的.更改密钥会使树无效.`unordered_map`是使用哈希表实现的.更改密钥意味着您可能永远不会再找到该项目,因为它可能在其新密钥的错误哈希桶中. (4认同)