我在图形中将边定义为一对城市,例如:make_pair(city1, city2)
我已经将对存储在set<pair<string,string>>
中
我现在想将cityA
的所有实例更改为cityB
。 cityA
可以位于pair.first
或pair.second
位置。
我尝试使用以下循环进行搜索,但是赋值运算符=符号出现错误。
此代码显示了两种方法。
我究竟做错了什么?
for (edgeSetIter = edgeSet.begin(); edgeSetIter != edgeSet.end(); edgeSetIter++)
{
if ((*edgeSetIter).first == cityA) { edgeSetIter->first = cityB; }
else if ((*edgeSetIter).second == cityA) { (*edgeSetIter).second = cityB; }
}
最佳答案
您不能修改集合中的元素,因为它们是关联容器的键。确切的quote from cplusplus.com:
set
的替代方法是使用非关联容器和 unique
。