在C++中,你可以使用std::set
容器來存儲已經按照自定義排序規則排序的元素。要實現自定義排序,你需要提供一個比較函數或者重載<
運算符。下面是兩種實現自定義排序的方法:
方法1:提供比較函數
#include <iostream>
#include <set>
// 自定義排序函數
bool customCompare(int a, int b) {
return a < b; // 從小到大排序
}
int main() {
std::set<int, decltype(&customCompare)> mySet(customCompare);
mySet.insert(5);
mySet.insert(3);
mySet.insert(8);
mySet.insert(1);
for (const auto& element : mySet) {
std::cout << element << " ";
}
return 0;
}
方法2:重載<
運算符
#include <iostream>
#include <set>
// 自定義排序類
struct CustomCompare {
bool operator()(int a, int b) const {
return a < b; // 從小到大排序
}
};
int main() {
std::set<int, CustomCompare> mySet;
mySet.insert(5);
mySet.insert(3);
mySet.insert(8);
mySet.insert(1);
for (const auto& element : mySet) {
std::cout << element << " ";
}
return 0;
}
在這兩個示例中,我們都創建了一個包含整數的std::set
,并使用自定義排序規則對元素進行排序。在第一個示例中,我們提供了一個比較函數customCompare
,而在第二個示例中,我們定義了一個重載了<
運算符的結構體CustomCompare
。在這兩種情況下,輸出結果都是按照升序排列的元素:1 3 5 8。