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

C++ For Loop returns matched values multiple times

本文关键字:返回 循环 C++For      更新时间:2023-10-16

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

这是我的匹配代码:

cout << "Please enter your airport of Departure.n e.g. EMA nn";
cin >> depCode;
cout << "nPlease enter your destination.n e.g. VIE nn";
cin >> destCode;
cout << "nPlease enter your date of travel.n e.g. 12/06/15 nn";
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));
                }
            }
        }

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

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