Я определил края в моем графике в виде пары городов, как: make_pair(city1, city2)
C++ ищет одну строку в наборе пар строк
Я хранятся пары в set<pair<string,string>>
Я сейчас хотите изменить все экземпляры cityA
на cityB
. cityA
может находиться в pair.first
или pair.second
.
Я попытался выполнить поиск со следующими циклами, но я получаю сообщение об ошибке в = sign, операторе присваивания.
Этот код показывает два способа.
Что я делаю неправильно?
for (edgeSetIter = edgeSet.begin(); edgeSetIter != edgeSet.end(); edgeSetIter++)
{
if ((*edgeSetIter).first == cityA) { edgeSetIter->first = cityB; }
else if ((*edgeSetIter).second == cityA) { (*edgeSetIter).second = cityB; }
}
Да, вы не можете изменить предмет, который выполняется итерацией. Спасибо ! – LindaK