我有一个结构列表:
submitted-image-url
我在列表中插入内容时对此进行排序。
伪:
typedef struct {
uint8_t mac_addr[6];
uint32_t signal;
uint32_t freq;
...
}pseudo_entry;
这非常不灵活,我想要一个我可以作为启动参数给出的订单。 有什么好主意吗?
我不需要整个代码。只是想法或可能是图书馆。
感谢。 :)
答案 0 :(得分:1)
您可能会对Intrusive Lists和面向数据的设计(结构数组与数组结构)感兴趣。优点包括更少的缓存未命中以及更好的数据和代码分离。
如果您正在使用C或 lambda ,如果您正在使用负责排序值并返回它们的C ++,则可以接收函数指针。
答案 1 :(得分:0)
您可以将数字转换为字符串(char*
),然后将它们连接成一个字符串。我认为对它们进行排序可能更容易,因为那时你只需要一个if
语句。但是,转换和连接可能比使用您在问题中提到的三个条件花费更多时间,因此您应该比较时间以检查它是否真的值得。
答案 2 :(得分:0)
您需要一个比较器功能,然后您可以将其传递给qsort功能:
int compt(void *f, void *s){
return (f->signal) -(s->signal);
}
然后:
qsort(&curr,<yourarraysize>, sizeof(cur), &compt);