gpt4 book ai didi

c++ - c++中排序函数的工作

转载 作者:行者123 更新时间:2023-11-30 01:55:02 24 4
gpt4 key购买 nike

我正在阅读我 friend 的代码并遇到了这部分 sort(c + 1, c + n + 1, compare);其中 c 是类客户的对象,定义为

class customer {
public:
int si;
int fi;
int pi;
};

并编写一个函数

bool compare(customer a, customer b)
{
if (a.pi < b.pi)
{
return true;
}
else if (a.pi > b.pi)
{
return false;
}
else
{
return a.fi < b.fi;
}
}

谁能解释一下排序函数是如何工作的,以及这个比较函数是如何与排序函数联系起来的。

最佳答案

std::sort is defined作为:

template <class RandomAccessIterator, class Compare>
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
// Sorts the elements in the range [first,last) into ascending order.
// The elements are compared using operator< for the first version, and comp for the second.

在你的例子中,我假设 c 指的是客户集合中的一个条目,因为调用

sort(c + 1, c + n + 1, compare);

将对集合中紧跟在 c 之后的 n 客户进行排序,使用 compare 来确定顺序。

std::sort 将为您执行排序,使用一些 sorting algorithm (在大多数实现中可能是快速排序)。为此,它需要能够比较两个元素。这就是 compare 函数发挥作用的地方:

Binary function that accepts two elements in the range as arguments,
and returns a value convertible to bool. The value returned indicates
whether the element passed as first argument is considered to go before
the second in the specific strict weak ordering it defines.

在您的情况下,compare 函数将按 pi 的升序和 fi 的升序对客户进行排序(在相等的 pi).

关于c++ - c++中排序函数的工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21171077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com