![]() |
1
2
假设您不局限于使用qsort,您可以使用std::sort和存储列号的函子对象。如果必须使用qsort,一个快速而肮脏的解决方案是将列号存储在全局变量中,并在comparison函数中使用它。 |
![]() |
2
2
不同的比较器函数,所有这些函数都采用整个结构,但每个函数只使用一列进行比较。 |
![]() |
3
2
可以按如下方式传递结构:
|
![]() |
4
1
C++还是C?基于你的标签,我假设它是C++。让我们试试STL方式。
你应该使用
functor类有效地创建了一个所谓的“闭包”:一个动态创建的函数对象,具有局部变量,但不与以这种方式创建的其他函数对象共享它们。它看起来是这样的:
请注意,比较“函数”(即您创建的类实例)不是空指针,而是
不幸的是,在C语言中,除了创建一个全局变量之外,不能用其他方法来实现这一点。 |
![]() |
RoadRunner · 对数组C进行部分排序 8 年前 |
|
DvD23 · 在C中对对象数组进行排序++ 10 年前 |
|
user2261877 · Malloc示例与qsort崩溃? 12 年前 |