다음과 같은 오류 메시지가 나타납니다. "표현식은 수정 가능 값이어야합니다. 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
은 int 쌍입니다. 뭐가 문제 야? 어떤 이유로 iter->first
모양이 const
으로 간주됩니다.
@ juanchopanza 나는 비 const 하나에 const 세트를 복사했습니다. –
유사 (AndreyT의 답변 이후 발견) : http://stackoverflow.com/questions/4064841/strange-error-setintbegin-always-returning-const-iterator –