从头开始创建哈希表的实现。如果散列桶中的条目数大于10,它将存储在二进制搜索树中,或者存储在链接列表中。
据我所知,能够实现这一目标的唯一方法是通过
enum class type_name { a, b };
我的问题:可以'a','b'可以成为课程吗?
所以为了实现一个哈希表,我想用这种方式创建一个枚举类的数组,一旦 Linked List 在数组的任何索引处,它将被替换为二进制搜索树。
如果无法做到这一点,那么实现这一目标的最佳方法是什么?我对链接列表和二进制搜索树的实现是完整的,并且工作完美。
注意:我不是在寻找完整的实施/完整代码。我希望能够自己编写代码,但我认为我的理论存在缺陷。
----------------------------------H A S H T A B L E---------------------------------------
enum class Hash { LinkedList, Tree };
INDEXES: 0 1 2 3 4
Hash eg = new Hash [ LinkedList, LinkedList, LinkedList, LinkedList, LinkedList ]
//11th element is inserted into eg[2]
//Method to Replace Linked List with Binary Search Tree
if (eg[1].getSize() > 10) {
Tree toReplace();
Node *follow = eg[1].headptr; //Each linked list is made of connected
//headptr is a pointer to the first element of the linked list
while ( follow != nullptr ){
toReplace.insert(follow->value);
follow = follow.next() //Next is the pointer to the next element in the linked list
}
}
//Now, the Linked List at eg[2] is replaced with a Binary Search Tree
Hash eg = new Hash [ LinkedList, LinkedList, Tree, LinkedList, LinkedList ]
答案 0 :(得分:0)
简短回答:不。
枚举是一种不同的类型,其值仅限于某个范围 值(详见下文),可能包括几个 明确命名的常量("枚举器")。的价值观 常量是称为基础类型的整数类型的值 列举。
http://en.cppreference.com/w/cpp/language/enum
类不会是整数类型的值'。
您可以使用tuple
实现所需目标。