我收到以下錯誤消息:「表達式必須是可修改的左值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