这是我实施kmean
算法的一部分。我有两个相同大小的内存块,因此*cluster_center
是群集的当前中心,*new_centroids
表示在获取群集点的平均值后的新质心:
double *cluster_center = malloc((k * dim) * sizeof(double));
double *new_centroids = malloc((k * dim) * sizeof(double));
我有以下循环将结果从new_centroids
复制到cluster_center
而没有任何问题:
for (int i = 0; i < k; ++i) {
memcpy(&cluster_center[i * dim], &new_centroids[i * dim], dim * sizeof(double));
}
事实上,我想知道C是否有内置函数来比较两个块的值,因为我想在值之后终止我的算法*new_centroids
和*cluster_center
是相同的(即,没有变化)。我真的不知道该怎么做。
谢谢
答案 0 :(得分:0)
您正在寻找的功能是memcmp
(内存比较)。执行声明后立即:
memcpy(destination, source, size);
然后
memcmp(destination, source, size);
应该返回零。