2013-04-23 2 views
0

유형이 클래스 인 경우 벡터 벡터에 약간의 도움이 필요합니다. "loadTruck"은 제 수업입니다. 내 클래스 "loadTruck"의 값을 벡터 (트럭, 인쇄) 순서로 2D 벡터에 저장하려고합니다. "트럭"과 "인쇄"는 모두 "loadTruck"클래스 유형입니다. 이 벡터에 대한 액세스를 원합니다 : 예를 들어 "인쇄"는 패키지이고 "트럭"은 트럭입니다. 나는 패키지 ID 20으로 트럭 1에있는 패키지에 대한 정보를 얻고 싶다. 나는 이것과 절대 혼동한다.클래스 유형의 다차원 벡터

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); 

} 

차원 배열 버전, \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 이제 programm은 잘 돌아가고 있지만 배열은 좋은 생각이 아니지만 내가하고 싶은 것을 이해하는 데 도움이되기를 바랍니다. 배열의 처음 두 요소를 정의 할 수 없기 때문에 vector를 사용해야합니다. algorythm에 의존하며 항상 변합니다. 이 예제에서는 처음 두 요소가 정적으로 정의된다고 가정합니다. 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

_specific_ 문제는 무엇입니까? – ApproachingDarknessFish

+0

나는 당신이하려는 일에 대한 당신의 설명이나 당신이 작성한 코드의 논리를 따르지 않을 것입니다. 하지만 'jedinecTruck.push_back (트럭);'이 오류라는 것을 알 수 있습니다. 그게 네가하는 질문에 관한거야? 그렇다면 조금 더 설명하십시오. – 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

작동하지 마십시오. OK 나는 내가 원하는 것을 지정하려고 노력할 것이다. 이런 식으로 배열과 같은 벡터를 사용해야합니다. 2D 배열을 가지고 있다면 array2D [0] [0] = value와 같은 것을 만들 수 있습니다. 그러나이 경우 array2D는 클래스 유형입니다. 그래서 클래스 array2D [0] [0]. 배열 대신 벡터를 사용해야합니다. – user1869623

+0

사실'array2D'는 클래스가 아니라 벡터입니다. 벡터는 배열과 같은 방식으로 인덱스 될 수 있으므로'array2D [0] [0]'은 배열 에서처럼 벡터에서 동일한 작업을 수행합니다. 귀하의 코드에서 생각하는 문제는'push_back'을 사용하여 두 차원 모두에서 배열을 동적으로 작성하는 것입니다. 이는 배열로 할 수있는 것이 아닙니다. 아마 벡터의 크기를 조정하고 벡터 대신 배열 인 것처럼 인덱스 연산자를 사용하면 문제가 실제로 어디에서 발생하는지 더 잘 이해할 수 있습니다. –

+0

안녕하세요, pls 내 질문을 다시 확인, 나는 배열, thx 솔루션을 추가합니다. – user1869623