2012-08-10 75 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循環中的臨時值,因此它保持爲初始eventVector中的最小值。 – skirkpatrick 2012-08-10 18:17:20

回答

2

您永遠不會在循環中重置temp的值。第一次通過後,它等於數組中最大的元素;在隨後的每一次傳遞中,它仍然是最大的,所以它不會改變。