История изменений
Исправление KivApple, (текущая версия) :
У хештаблиц есть как минимум один конструкционный паттерн, который можно реализовать по-разному - хранить ли данные в самой таблице или хранить ли в таблице указатели на данные. Я не уверен, но кажется Rust использует первый подход, а C++ второй. В таком случае C++ получает штраф из-за большего количества аллокаций (и не важно перехешируем мы или нет - аллокация происходит на каждый добавляемый элемент в любом случае) и введения indirection.
C++: https://en.wikipedia.org/wiki/Hash_table#Separate_chaining
Исходная версия KivApple, :
У хештаблиц есть как минимум один конструкционный паттерн, который можно реализовать по-разному - хранить ли данные в самой таблице или хранить ли в таблице указатели на данные. Я не уверен, но кажется Rust использует первый подход, а C++ второй. В таком случае C++ получает штраф из-за большего количества аллокаций (и не важно перехешируем мы или нет - аллокация происходит на каждый добавляемый элемент в любом случае) и введения indirection.