要在std::set中實現自定義排序,可以使用自定義的比較函數或仿函數來定義元素的排序規則。以下是一個示例代碼,演示了如何使用自定義比較函數來對set中的元素進行排序:
#include <iostream>
#include <set>
// 自定義比較函數,按照元素的絕對值大小進行排序
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;
}
在這個示例中,我們定義了一個自定義的比較函數Compare
,它按照元素的絕對值大小進行排序。然后在聲明set對象時,指定了自定義的比較函數Compare
作為第二個模板參數。這樣就可以在set中使用自定義的比較函數來對元素進行排序。