2013-04-23 2 views
0

Мне нужна небольшая помощь с вектором вектора, когда тип является классом. «loadTruck» - мой класс. Я хочу сохранить значения из моего класса loadTruck в 2D-вектор в этом порядке: vector (truck, print). И «грузовик», и «печать» - это тип класса «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 элемента массива, это зависит от алгоритма и всегда меняется. Для этого примера я предполагаю, что первые два элемента будут определены статически. 3-й элемент получил 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

И вопрос ...? –

+1

Какая у вас проблема с конкретной проблемой? – ApproachingDarknessFish

+0

Я не следую ни вашему объяснению того, что вы пытаетесь сделать, ни логике кода, который вы написали. Но я вижу, что 'jedinecTruck.push_back (truck);' является ошибкой. Это то, о чем вы спрашиваете? Если да, тогда объясните немного больше об этом. – john

ответ

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

Не работает. ОК, я постараюсь указать, что мне нужно. Мне нужно использовать такие векторы, как массив. Если у вас есть 2D-массив, вы можете сделать что-то вроде array2D [0] [0] = значение. Но в этом случае array2D является типом класса. Итак, класс array2D [0] [0]. Вместо массива я должен использовать вектор. – user1869623

+0

Фактически 'array2D' - это вектор, а не класс. Вектор может быть проиндексирован так же, как и массив, поэтому 'array2D [0] [0]' делает то же самое для вектора, как и для массива. Проблема, которую я думаю в вашем коде, заключается в том, что вы используете 'push_back' для динамического построения массива в обоих измерениях, что вы не можете сделать с массивом. Возможно, если вы предварительно определили векторы и просто используете индексирующие операторы, как если бы это был массив вместо вектора, было бы более полезно выяснить, где проблема на самом деле. –

+0

Привет, PLS снова проверьте мой вопрос, я добавляю решение с массивом, thx – user1869623

Смежные вопросы