的std ::排序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);
將排序n
客戶立即按照收集中的c
,使用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
內)。
應該使用引用和'const'進行比較。即'bool比較(const customer&a,const customer 7b);' –
相反,你應該解釋你不瞭解的內容。 –
@EdHeal我不認爲這是必須的。因爲即使我直接傳遞它也是有效的。 – nomorequestions