冒泡排序,无法进入循环

时间:2015-02-01 10:26:00

标签: c++

我正在使用向量进行冒泡排序程序,我无法在BubbleSort中输入for循环,该循环应该在排序后显示我的结果。 我正在排序一个向量,我想通过Departure对它进行排序(它在另一个文件中声明)。

我期待一个按航班排序的列表,按出发时间排序,这是一个字符串。

这是我的代码:

Header:
class BubbleSort : public Sort
{
public:
    // main entry point
    void sort(std::vector<Flight>& data);
};

void BubbleSort::sort(std::vector<Flight>& data)
{
    list<Flight>::iterator m = flights.begin();
    int temp;
    while (m != flights.end()) {
        for (int i = 0; i <data.size(); ++i) 
            for(int j = 0; j < (data.size()-1); ++j)
                if (data[j] > data[j+1]) {
                    Flight temp = data[j];
                    data[j] = data[j+1];
                    data[j+1] = temp;
                }
        for(int k = 0; k < data.size(); ++k) {       //the problematic loop
            cout << "Array after bubble sort: ";
            cout << data[k].getDeparture() << endl;
        }
        m++;
    }
}

main: 
// global variables
vector<Flight> flightsVector;           //vector containing all flights
list<Flight> flights;                   //list containing flights (objects of class Flight)
list<string> flightDepartures;

// function declarations
void loadFlights(ifstream& in);

void fillFlightsList();                 //fills flights with flights objects (formed of destinations, departures, flight numbers and gate numbers)
void printFlightsList();                //prints the list of flights

void display_info();
void printFlightsList();


void main()
{
    vector<Flight> data;
    ifstream in("inputFileExample.txt");
    if (!in)
    {
        cerr << "ERROR: wrong input file name!";
        exit(-1);
    }

//  Sort* s;

    loadFlights(in);
    fillFlightsList();

    printFlightsList();
    cout << endl;

    BubbleSort bubble;
    bubble.sort(data);
    cout << endl;

    return;
}

1 个答案:

答案 0 :(得分:1)

那是因为列表是空的。