我收到以下错误消息:“表达式必须是可修改的左值iter-> first = iter-> second;”代码:对的集合的迭代器是const?
func(const std::set<Edge> &obstructEdges1,
const std::set<Edge> &obstructEdges2)
{
std::set<Edge> obstructEdges = obstructEdges1;
obstructEdges.insert(obstructEdges2.begin(), obstructEdges2.end());
for (std::set<Edge>::iterator iter = obstructEdges.begin();
iter != obstructEdges.end(); iter++)
{
if (iter->first > iter->second)
{
int t = iter->first;
iter->first = iter->second;
iter->second = t;
}
...
Edge
是一对整数。怎么了?由于某种原因,看起来像iter->first
被认为是const
。
@ juanchopanza我将常量集合复制到非常量集合中。 – 2014-08-28 20:53:53
相似的(在AndreyT的答案后发现):http://stackoverflow.com/questions/4064841/strange-error-setintbegin-always-returning-const-iterator – 2014-08-28 20:58:00