2013-04-23 53 views
0

當類型是類時,我需要一個向量向量的幫助。 「loadTruck」是我的課程。我想按照以下順序將我的類「loadTruck」中的值存儲到2D矢量中:矢量(卡車,打印)。 「卡車」和「打印」都是「loadTruck」類的類型。我想要訪問這個矢量:例如可以說「打印」是包裝,「卡車」是卡車。我想獲得有關卡車1中包裹的信息,包裹編號爲20.我完全同意這一點。類類型的多維向量

vector<vector <loadTruck>> jedinecTruck; 
loadTruck truck; 

while (warehouseIsEmpty == False) 
{ 
    truck.resetTruck(); 
    for (int i = 0; i < numOfPackages; i++) 
    { 
     vector<loadTruck> print; 
     if (store2D[i].checkIfPackageIsThere() == true) 
     { 
      truck.setPackageSize(store2D[i].getPackageWidth(), store2D[i].getPackageHeight()); 
      if (truck.checkIfPackageCanBeLoaded() == true) 
      { 
       print.push_back(truck); 
       truck.loadPackageInTruck(); 
       store2D[i].deletePackage(); 
      } 
     } 
    } 
    jedinecTruck.push_back(truck); 

} 

與3D陣列版,\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 現在程序運行良好,但數組並不是個好主意,但我希望它能幫助你理解我想要做什麼。我需要使用矢量,因爲我無法定義數組的前2個元素,它依賴於algorythm並且總是在變化。對於這個例子,我想前兩個元素將被靜態定義。第三個元素總是有4個組件。

vector<loadTruck> jedinecTruck; 
loadTruck truck; 

int array[1][3][4]; 

while (wharehouseIsEmpty == false) 
{ 

    truck.resetTruck(); 
    for (int i = 0; i < numOfPackages; i++) 
    { 
     if (store2D[i].checkIfPackageIsThere() == true) 
     { 
      truck.setPackageSize(store2D[i].getPackageWidth(), store2D[i].getPackageHeight()); 
      if (truck.checkIfPackageCanBeLoaded() == true) 
      { 
       truck.loadPackageInTruck(); 
       store2D[i].deletePackage(); 
       array[0][i][0] = truck.getActualX1(); 
       array[0][i][1] = truck.getActualX2(); 
       array[0][i][2] = truck.getActualY1(); 
       array[0][i][3] = truck.getActualY2(); 
      } 
     } 
    } 
    jedinecTruck.push_back(truck); 
    } 

問候

+3

而問題是....? – 2013-04-23 18:48:09

+1

你有什麼特殊問題? – ApproachingDarknessFish 2013-04-23 18:52:53

+0

我不是遵循你對你要做什麼或你寫的代碼的邏輯的解釋。但我可以看到'jedinecTruck.push_back(truck);'是一個錯誤。那你所問的是關於什麼?如果是的話再解釋一下。 – john 2013-04-23 18:59:38

回答

0

也許這是更接近你想要做什麼:

vector<vector <loadTruck>> jedinecTruck; 
loadTruck truck; 

while (warehouseIsEmpty == False) 
{ 
    truck.resetTruck(); 
    vector<loadTruck> print; 
    for (int i = 0; i < numOfPackages; i++) 
    { 
     if (store2D[i].checkIfPackageIsThere() == true) 
     { 
      truck.setPackageSize(store2D[i].getPackageWidth(), store2D[i].getPackageHeight()); 
      if (truck.checkIfPackageCanBeLoaded() == true) 
      { 
       print.push_back(truck); 
       truck.loadPackageInTruck(); 
       store2D[i].deletePackage(); 
      } 
     } 
    } 
    jedinecTruck.push_back(print); 

} 

這是很難從你的問題告訴,雖然。

+0

不要工作。好的,我會嘗試指定我需要的。我需要像這樣使用數組這樣的向量。如果你有二維數組,你可以做一些像array2D [0] [0] = value的東西。但在這種情況下,array2D是類的類型。所以類array2D [0] [0]。而不是數組我必須使用向量。 – user1869623 2013-04-23 19:49:08

+0

實際上'array2D'是一個向量,而不是一個類。一個向量可以像數組一樣進行索引,所以'array2D [0] [0]'對於一個向量和它爲數組做同樣的事情。我認爲在你的代碼中的問題是你正在使用'push_back'在兩個維度上動態地構建數組,這不是你可以用數組完成的事情。 也許如果你事先確定了矢量的大小,並且只是使用索引運算符,就好像它是一個數組而不是一個矢量,那麼在確定問題真正出現在哪裏會更有意義。 – 2013-04-23 19:53:05

+0

嗨,請再次檢查我的問題,我添加數組解決方案,thx – user1869623 2013-04-23 22:15:16