枚举可以成为一个类吗? - C ++ [enum class] [Theory] ​​

时间:2016-12-22 03:50:22

标签: c++11 data-structures enums enumeration

我的目标:

从头开始创建哈希表的实现。如果散列桶中的条目数大于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 ]

1 个答案:

答案 0 :(得分:0)

简短回答:不。

  

枚举是一种不同的类型,其值仅限于某个范围   值(详见下文),可能包括几个   明确命名的常量("枚举器")。的价值观   常量是称为基础类型的整数类型的值   列举。

http://en.cppreference.com/w/cpp/language/enum

类不会是整数类型的值'。

您可以使用tuple实现所需目标。

http://en.cppreference.com/w/cpp/utility/tuple