这是我实现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 是否有内置函数来比较两个 block 的值,因为我想在值 *new_centroids
和 *cluster_center
相同(即没有改变)。我真的不知道该怎么做。
谢谢
最佳答案
您要查找的函数是memcmp
(内存比较)。执行语句后立即:
memcpy(destination, source, size);
然后
memcmp(destination, source, size);
应该返回零。
关于比较两个内存块之间的值是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39396018/