以下问题分段错误执行方法我停在另一个问题中。
鉴于:
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
. 但是,我怎样才能实现第二个选项?