std::vector<Cluster*>* ClusterMerger::MergeClustersIfRequired(std::vector<Cluster*>* clusters) { std::vector<Cluster*>::iterator iter; std::vector<Cluster*>::iterator iter1; //check each against every other //check for 2 instances of each given comparing to several :( //iterate through each cluster, then iterate through each other cluster Cluster* c1; Cluster* c2; a: for (iter=clusters->begin();iter<clusters->end();iter++) { c1 = (Cluster*)*iter; for (iter1=clusters->begin();iter1<clusters->end();iter1++) { c2 = (Cluster*)*iter1; if (!(c1==c2)) { if (IsMergeRequired(c1,c2)) { Cluster* merged = c1->Merge(c2); remove(clusters, c1); remove(clusters, c2); clusters->push_back(merged); goto a; } } } } return clusters; }
void ClusterMerger::MergeclusterdatsIfRequired(clusterdat** clusterdats, int* count){ int index = 0; int index1 = 0; a: for (index=0;index<settings->clusterdatcount;index++) { if (clusterdats[index]) { for (index1=0;index1<settings->clusterdatcount;index1++) { if (clusterdats[index1]) { if (!(clusterdats[index]==clusterdats[index1])) { if (IsMergeRequired(clusterdats[index],clusterdats[index1])) { cfnc.Merge(clusterdats[index],clusterdats[index1]); *count--; clusterdats[index1]=0; int check = 0; while (check<(settings->clusterdatcount-1)) { if (clusterdats[check]==0) { clusterdats[check] = clusterdats[check+1]; } check++; } goto a; } } } } } } }