2012-08-10 6 views
0
void sortVector(vector<simEvent>& eventVector){ 

    simEvent temp = eventVector.at(0); 
    vector<simEvent> tempVector; 
    tempVector.clear(); 
    int index = 0; 

    while(!eventVector.empty()){ 
     for(int i=0; i<eventVector.size(); i++){ 
      if(temp.getTimeOfEvent() > eventVector.at(i).getTimeOfEvent()){ 
       temp = eventVector.at(i); 
       index = i; 
      } 
     } 
     eventVector.erase(eventVector.begin()+index); 
     tempVector.push_back(temp); 
    } 

    for(int i=0; i<tempVector.size(); i++){ 
     cout << "Time: " << tempVector.at(i).getTimeOfEvent() << endl; 
    } 

} 

인쇄 할 때 항상 tempVector는 동일합니다. 나는 이것에 대한 답을 찾기 위해 어디에서나 보았으며 아무 것도 찾을 수없는 것처럼 보였다. 누군가 줄 수 있나요?C++ 벡터 업데이트 안 함

+1

while 루프에서 temp를 재설정하지 않으므로 초기 eventVector에 있던 가장 작은 값으로 유지됩니다. – skirkpatrick

답변

2

루프에서 temp 값을 재설정하지 마십시오. 첫 번째 패스 후에는 배열의 가장 큰 요소와 같습니다. 이후의 모든 패스에서 여전히 가장 크기 때문에 변경되지 않습니다.