以下问题分段错误执行方法我停在另一个问题中。
鉴于:
Cluster * base;
Cluster * absorbed;
list<Cluster>::iterator li = clusters.begin();
// li is then pointed to some element.
absorbed = &(*li); // Get a pointer to the chosen element.
base->joinCluster(absorbed); // Perform an action with absorbed.
// li contines the cycle and now point to clusters.end()
// Now, absorbed should be deleted from list. li doesn't point to absorbed anymore.
li = & (* absorbed);
clusters.erase(li);
试图做与上述相反的操作,但 g++ 返回错误:error: no match for 'operator=' in 'li = absorbed'
我该怎么做?
我试图避免循环遍历列表中的所有元素以再次找到那个absorbed。
编辑:
对不起,但我明白我错过了说之后absorbed = &(* li); li继续循环直到clusters.end()。所以,在循环结束时,li不再指向absorbed。我想我有两个选择:要么我再次循环遍历所有元素clusters以找到absorbed元素;要么 或者我利用absorbed指针从clusters. 但是,我怎样才能实现第二个选项?