Главная arrow С++ (часть 2) arrow функция match

функция match

функция match (), приведенная далее, определяет, есть ли рейс между двумя
городами, заданными в переменных from и to.
// Если существует прямой рейс между from и to,
// запоминает длину рейса в dist.
// Возвращает true, если рейс существует, и
// false — в противном случае.
bool Search::match(string from, string to, int &dist) {
for(unsigned i=0; i < flights.size(); i++)  { if(flights[i].from == from &&
flights[i].to == to && !flights[i].skip)
{
flights[i].skip = true; // препятствует повторному использованию dist = flights[i].distance; return true;
}
>
return false; //не найден
}
Функция match о просматривает вектор flights в поисках любого элемента, у которого пункты отправления и назначения совпадают со значениями переменных from и to соответственно. Она возвращает false, если такого рейса не существует. Если такой рейс есть, функция возвращает true, в этом случае она также извлекает расстояние между городами и запоминает его в переменной, на которую ссылается ее параметр dist.
Обратите внимание на то, что функция match () игнорирует рейсы, у которых поле skip равно true. Если рейс найден, его полю skip присваивается значение true. Эти действия управляют возвратом из тупиков (dead ends), препятствуя многократной проверке одних и тех же рейсов.