【发布时间】:2014-08-28 20:52:25
【问题描述】:
我收到以下错误消息:
"表达式必须是可修改的左值iter->first = iter->second;"
代码:
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 我将 const 集复制到非 const 集。
-
类似(在 AndreyT 的回答后找到):stackoverflow.com/questions/4064841/…