我的编码的相关(我认为)行如下。这意味着有一个集群列表。其中一个,base
,将吸收另一个(aborbed
)。aborbed
集群应该从list
.
我遇到的第一个问题是,在循环关闭后,我需要在集群base
和absorbed
集群中执行其他操作。while
从我的搜索中,我找到了= &(*li)
这些东西。我的理解是,我得到了一个指向元素li
指向的地址的指针,尽管我做不到 absorbed = li
,因为一个是迭代器,另一个是(简单?) ponter。我很感激对此的一些解释。
现在,更大的问题是我在c->getPoints();
方法行中遇到了分割错误joinCluster()
我做错了什么?我该怎么办?为什么?
我在 Linux x86_64 中使用 g++ (GCC) 4.5.2。
Cluster * base;
Cluster * absorbed;
list<Cluster>::iterator li = clusters.begin();
while ( li != clusters.end() ) {
if (li->getId() == p2) {
absorbed = &(*li);
li = clusters.erase(li);
} else if (li->getId() == p1) {
base = &(*li);
}
++li;
}
base->joinCluster(absorbed);
void Cluster::joinCluster(Cluster * c)
{
set<unsigned int> pts = c->getPoints();
}
set<unsigned int> Cluster::getPoints()
{
return points;
}
class Cluster {
private:
std::set<unsigned int> points;
public:
std::set<unsigned int> getPoints();
};