2016-10-05 52 views
1

所以從我所瞭解的散列表幾乎是一個鏈表的數組,所以我想讓一個數組成爲特定用戶輸入的大小,所以如果用戶輸入'5'時,散列表中將有5個桶(或索引)。問題是,當我嘗試在.h文件中創建數組時,它說數組長度必須是常量。我應該在.h以外的地方定義這個地方,還是可以用其他方式來做到這一點?謝謝!製作一個用戶輸入的大小的散列表

這裏是我的.h文件:

#include <string> 


using namespace std; 

struct athlete{ 

    string discipline; 
    string gender; 
    string team; 
    string event; 
    string venue; 
    string medal; 
    string name; 
    string country; 
    athlete* next; 

}; 


class hTable{ 

private: 
    int tableSize; // need this to be user input 
    athlete* HashTable[tableSize]; // hashTable is an array of athletes 


public: 
    hTable(); 
    int Hash(string key); 
  • 也爲我道歉語法英語不是我的第一語言

回答

4

如果你想它需要動態分配一個動態大小的數組。

HashTable = new athlete[tableSize]; 

而且在頭文件HashTable將被定義爲:

athlete* HashTable; 

它可能更好地使用std::unique_ptr,因爲它使內存清理更加容易。

通常std::vector是比普通數組更優選的數據結構。

而對於記錄來說,散列表不僅僅是一個鏈表的數組。

+0

可能只是更好地推薦OP使用'vector'來代替 –

+0

@NirFriedman是的,但在某些時候他需要知道動態分配內存的問題。 –

+0

當然,我不確定今天是否是那一天。有一個upvote! –

相關問題