这是一个创建Clustering
对象并按值返回的方法。
Clustering ClusteringGenerator::makeOneClustering(Graph& G) {
int64_t n = G.numberOfNodes();
Clustering zeta(n);
cluster one = zeta.addCluster();
for (node v = G.firstNode(); v <= n; ++v) {
zeta.addToCluster(one, v);
}
return zeta;
}
此循环多次调用该方法并将指向返回值的指针添加到向量中。
int z = 3
for (int i = 0; i < z; ++i) {
// FIXME: why is zeta the same each iteration?
Clustering zeta = clusterGen.makeOneClustering(G);
DEBUG(&zeta);
clusterings.push_back(&zeta);
}
DEBUG 语句的输出是
0x7fff4ff894d0
0x7fff4ff894d0
0x7fff4ff894d0
所以这意味着&zeta
在每次迭代中都是相同的指针。为什么?如何获得所需的结果(Clustering
每次迭代创建一个对象并将其记住在向量中)?