В обеих реализациях контейнеры хранят необработанный массив node_type
, который по сути представляет собой простой связанный список, в котором хранится тип T
.
// From SGI
template <class _Val>
struct _Hashtable_node
{
_Hashtable_node* _M_next;
_Val _M_val;
};
Я внедряю свою собственную версию для образовательных целей, и мне интересно, почему они не используют std::list<>
контейнер для контейнеров? Зачем писать код, который уже существует в std::list<>
?
Одна из причин, с которой я столкнулся, может заключаться в том, что std::list<>
имеет двойную связь, так что есть пустое пространство. Но что, если один использует один связанный список? И почему бы не иметь bucket_type
параметр шаблона, чтобы его можно было изменить?