【发布时间】:2012-10-14 01:58:23
【问题描述】:
尝试比较排序算法的空位。到目前为止我有这个,但如果你把它们转换成整数,它有点违背了 IMO 的目的。有没有办法比较空洞?我的教授没时间了,怎么被困在网上。任何帮助表示赞赏。谢谢
int fcmp(const void *one, const void *two)
{
if (*(int*)one > *(int*)two) return 1;
if (*(int*)one < *(int*)two) return -1;
return 0;
}
【问题讨论】:
-
“比较空隙”是什么意思? Void 基本上什么都不是——在
void *中,表示特定类型的absence——那么C++ 怎么知道要比较什么? -
void是一个不完整的类型,因此您不能取消引用void *。因此,没有办法比较空位。由于这是标记为 C++,您不应该使用std::sort。模板可以让你避免这种void *丑陋。 -
@Praetorian:+1 用于提及模板。我正要这样做,但是。 :) 听起来这是一个编程练习,不过……所以重新发明像 std::sort 这样的东西是其中的一部分也就不足为奇了。
-
短语“我的教授”表明这是来自编程课,可能是关于使用旧技术来演示程序员可能会遇到的特定技术,尤其是在维护旧源代码时。这是一个完全合理的问题。
标签: c++ pointers comparison void void-pointers