Разница между python dict и tr1 :: unordered_map в C ++ - PullRequest
9 голосов
/ 28 февраля 2010

У меня есть вопрос, связанный с пониманием того, как работают словари python.

Я помню, что чтение где-то строк в python является неизменным, чтобы разрешить хеширование, и это та же самая причина, по которой нельзя напрямую использовать списки в качестве ключей, то есть списки являются изменяемыми (с поддержкой .append) и, следовательно, их нельзя использовать в качестве словаря. ключи.

Я хотел бы знать, как реализация unordered_map в C ++ обрабатывает эти случаи. (поскольку строки в C ++ являются изменяемыми)

1 Ответ

7 голосов
/ 28 февраля 2010

Ключи во всех контейнерах C ++ map / set являются постоянными и, следовательно, неизменяемыми (после добавления в контейнер).

Обратите внимание, что контейнеры C ++ не являются специфичными для строковых ключей, вы можете использовать любые объекты, но постоянство предотвратит изменения после копирования ключа в контейнер.

...