我将如何以更加面向对象的方式表示这一点?

时间:2013-01-30 00:24:48

标签: c++ oop hashtable

typedef char STR10[10+1];
typedef char STR20[20+1];

typdef struct Slot
{
    STR10 key;
    STR10 value;
};

const int MAX_SLOTS = 3;
const int MAX_BUCKETS = 30;

typedef struct Bucket
{

        short int count;
        short int overflow;
        Slot slots[MAX_SLOTS]; 
};

typedef Bucket HashTable[MAX_BUCKETS];

大多数情况下,我只是对最后一行的概念感到困惑。我知道我可以将结构更改为类,这样会很好,但最后一行是找到我的。它基本上是说HashTable是一个桶阵列。这段代码是否足够好,或者有没有办法在HashTable类中表示它?

class HashTable 
{
private:
   Bucket table[MAX_BUCKETS];
}

会代表同样的想法吗?我真的很想开始这个。

1 个答案:

答案 0 :(得分:2)

如果可以的话,我可以用std::string替换char数组,用std::vector替换Slot数组,用enum替换define:

enum SlotSize
{
   MaxSlots = 3
};

enum BucketSize
{
    MaxBuckets = 30
};

struct Slot
{
    std::string key;
    std::string value;
};

struct Bucket
{

    int count;
    int overflow;
    std::vector<Slot> slots;
};

class HashTable 
{
private:
   std::vector<Bucket> table;
}