C ++ For循环多次返回匹配的值

时间:2015-03-24 17:19:54

标签: c++ loops for-loop match

我试图将用户输入的字符串与我的向量中的某些元素进行匹配,然后如果它们匹配,则将所有信息添加到新的匹配向量中,然后可以将其输出给用户。但是我的程序似乎找到匹配/匹配然后多次存储它们(所以我的匹配向量用相同的数据填充4/5次。)

以下是我的匹配代码:

cout << "Please enter your airport of Departure.\n e.g. EMA \n\n";

cin >> depCode;

cout << "\nPlease enter your destination.\n e.g. VIE \n\n";

cin >> destCode;

cout << "\nPlease enter your date of travel.\n e.g. 12/06/15 \n\n";

cin >> dateTravel;


        for(int i=0; i<flights.size();++i){
            for(int j=0; j<airports.size();++j){
                if(flights[i].originAirport == depCode && flights[i].destinationAirport == destCode){
                    string oAirport = flights[i].originAirport; //airports[j].airportCode;
                    string dAirport = flights[i].destinationAirport; //airports[k].airportCode;
                    string Airline = flights[i].Airline;
                    int Price = flights[i].airlinePrice;
                    int departureTax = airports[j].departureTax;
                    int Duration = flights[i].Duration;
                    matched.push_back(matchedFlights(oAirport,dAirport,Airline,Price,departureTax,Duration));
                }
            }
        }

任何帮助都会非常感激,因为我现在非常困惑。我是初学者,所以如果这是一个非常明显的错误,我很抱歉。

1 个答案:

答案 0 :(得分:2)

即使if语句仅使用航班向量中的值,您的if语句也会针对机场向量中的每个元素以相同条件开始执行,从而创建重复项。您可能想要重新考虑您的逻辑,以及是否/如何使用内循环。