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 を印刷すると、すべての時間が同じになります。私はこれに対する答えをどこでも探しましたが、何も見つからないようです。誰かこれを見てくれませんか?

4

1 に答える 1

2

tempループ内での値をリセットすることはありません。最初のパスの後、配列内の最大の要素と等しくなります。後続のすべてのパスでは、依然として最大であるため、変更されません。

于 2012-08-10T18:20:15.963 に答える