我需要在運行時爲散列表分配創建一個鏈接列表數組。我們給出的示例代碼只允許創建靜態大小的數組,我無法弄清楚如何修改它以使用變量,因爲我嘗試過的所有內容都會導致錯誤。如何創建動態大小的鏈接列表數組?
示例代碼:
typedef std::list<int> INT_LIST;
typedef INT_LIST* INT_LIST_POINTER;
int size = 13;
INT_LIST_POINTER myArray[size];
INT_LIST_POINTER tmpPtr;
// initialize the array to point to empty lists
for (int i=0; i<size; i++){
tmpPtr = new INT_LIST;
myArray[i] = tmpPtr;
}
在我當前的非工作代碼:
typedef std::list<int> INT_LIST;
typedef INT_LIST* INT_LIST_POINTER;
INT_LIST_POINTER myArray = new INT_LIST[p];
INT_LIST_POINTER tmpPtr;
for (int i=0; i<n; i++){
INT_LIST* temp = new INT_LIST;
myArray[i] = temp;
}
的主要問題似乎是與
myArray[i] = temp;
這也不說那些操作數相匹配。
查看'std :: vector.resize'和'std :: vector.push_back'方法。 – 2012-02-29 09:25:44
如果你想結束你的老師,請指出示例代碼是無效的C++。它應該是'const int size = 13;'。爲了演示這一點,使用例如帶有'-pedantic-errors'選項的GCC來禁用非標準語言擴展。 – 2012-02-29 09:42:29
所有大寫標識符(按慣例)用於在短時(例如T,U,T2)表示模板參數,否則爲預處理器宏。它們不應該用於類型。一個小問題,但足以讓我想到誰給你你的示例代碼沒有線索。此外,爲什麼當你只需要一個'std :: list'數組時,有一個指向'std :: list'的指針數組?它效率較低,維護性較差(請注意 - 取消分配代碼 - 「delete」的另一個循環)從樣本中缺失)。 – 2012-02-29 10:04:05