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
反復ごとに1つのオブジェクトを作成し、それをベクトルに記憶します)?