我在图形中将边定义为一对城市,例如:make_pair(city1, city2)
我已经将对存储在set<pair<string,string>>

我现在想将cityA的所有实例更改为cityBcityA可以位于pair.firstpair.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

10-05 23:34