1
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];
}

それは同じ考えを表していますか?私はこれを始めるのに本当に苦労しています。

4

1 に答える 1

2

可能であれば、char配列をstd :: stringに置き換え、スロット配列をstd :: vectorに置き換え、defineをenumに置き換えます。

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;
}
于 2013-01-30T00:30:48.687 に答える