2015-06-04 117 views
0

我有一個類用於創建鏈表。主要我想創建多個列表。我的意思是不覆蓋前一個。我怎樣才能做到這一點,而不必給一個新的名字來創建一個類的對象。如果例如我不得不做1000個名單,我不能給他們1000個不同的名字。我嘗試使用一個對象數組,但我似乎並沒有得到它的工作。在類中創建多個對象

編輯:對不便,但我不允許使用矢量。 這裏的一些代碼:

list **root; 
root=new list*[M]; 
for (int i=0;i<M;i++) 
{ 
    root[i]=NULL; 
    root[i]=new list(); 

} 

這是主要的,然後我用這個

(*root[pos]).addnode(b,a); 

不管我用什麼POS所有進入同一個列表。

+0

那麼,讓它工作或發佈什麼失敗,因爲數組是要走的路。 – Quentin

+1

如果你不能創建鏈表的數組,你的鏈表就有錯誤。前進的方向是找到這些錯誤並修復它們。發佈一些不適用於數組的代碼(儘可能少)。 – molbdnilo

+0

@molbdnilo我添加了一些代碼 – Jenny

回答

0

如果您創建了一些鏈接列表類LinkedList,您可以創建列表的std::vector。然後你可以遍歷它們並做你想做的任何事情。

#include <vector> 
int main() 
{ 
    std::vector<LinkedList> lists(1000); 
    for (auto& list : lists) 
    { 
     // do something with each list 
    } 
} 

如果你知道你想要的到底有多少LinkedList對象提出的,該值是固定的,你也可以使用std::array

#include <array> 
int main() 
{ 
    std::array<LinkedList, 1000> lists; 
    for (auto& list : lists) 
    { 
     // do something with each list 
    } 
} 
+0

我建議使用同義'for(auto && list:lists)'。 – Quentin

+0

爲什麼?遍歷'vector'中每個項目的引用都可以正常工作。 – CoryKramer

+0

僅僅是一種文體選擇,因爲'auto &&'將始終有效。 'auto&'可以中斷,例如'std :: vector '。 – Quentin

0

您可以將矢量只是來存儲你的鏈接列表,或者您如果您想使用密鑰訪問它們,可以使用地圖。

// Here you can use a string to find a specific list 
std::map<std::string, LinkedList> listMap; 
// Then you can add and access list using the [] operator 
listMap["Key"]; 

// Here you have to use an iterator to access the lists 
std::vector<LinkedList> listVector(numberOfListsYouPlanToHave);