要在std::set中實(shí)現(xiàn)自定義排序,可以使用自定義的比較函數(shù)或仿函數(shù)來(lái)定義元素的排序規(guī)則。以下是一個(gè)示例代碼,演示了如何使用自定義比較函數(shù)來(lái)對(duì)set中的元素進(jìn)行排序:
#include <iostream>
#include <set>
// 自定義比較函數(shù),按照元素的絕對(duì)值大小進(jìn)行排序
struct Compare {
bool operator()(const int& a, const int& b) const {
return std::abs(a) < std::abs(b);
}
};
int main() {
std::set<int, Compare> mySet;
mySet.insert(5);
mySet.insert(-3);
mySet.insert(2);
mySet.insert(-1);
for (const auto& val : mySet) {
std::cout << val << " ";
}
return 0;
}
在這個(gè)示例中,我們定義了一個(gè)自定義的比較函數(shù)Compare
,它按照元素的絕對(duì)值大小進(jìn)行排序。然后在聲明set對(duì)象時(shí),指定了自定義的比較函數(shù)Compare
作為第二個(gè)模板參數(shù)。這樣就可以在set中使用自定義的比較函數(shù)來(lái)對(duì)元素進(jìn)行排序。