首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SimGrid。怎么写比较器?

SimGrid。怎么写比较器?
EN

Stack Overflow用户
提问于 2016-05-29 22:34:50
回答 1查看 78关注 0票数 1

我有一个动态的主机数组:

代码语言:javascript
复制
xbt_dynar_t dynar_host = xbt_dynar_new(sizeof(MSG_host_t), NULL);

每个主机都包含有关其在触发器中的速度的信息。我想按他们主人的速度来分类。在文档中,我找到了函数排序。该函数接受两个参数:动态数组本身和比较器int_f_cpvoid_cpvoid_t compar_fn

有什么建议或例子可以写这个比较器吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-29 22:59:03

此函数仅将标准的qsort函数应用于存储在dynar中的数据,因此您还应该阅读libc文档手册页本教程以获得更多信息。

因此,您应该编写一个类似于以下内容的函数:

代码语言:javascript
复制
int mycmp(void *a,void*b) 
{
  MSG_host_t hostA = *(MSG_host_t*)a;
  MSG_host_t hostB = *(MSG_host_t*)b;
  double valA = MSG_host_get_speed(hostA);
  double valB = MSG_host_get_speed(hostB)
  return (valA > valB) - (valA < valB);
}

然后,打电话给xbt_dynar_sort(dynar, mycmp)对你的痢疾进行排序。

注意,函数返回线的实际比较有点复杂。这是一种以数值稳定的方式服从函数语义的方法(A< B返回-1,A==B返回0,A>B返回1)。正如相关的libc文件中所建议的那样。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37515612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档