在C++中,set是按照元素的比較函數進行排序的。如果要遍歷set并按照特定的順序排序,可以使用自定義的比較函數來實現。
以下是一個示例代碼,演示如何定義一個自定義的比較函數,并在遍歷set時按照該比較函數的順序排序:
#include <iostream>
#include <set>
using namespace std;
// 定義一個自定義的比較函數,用于按照元素的大小進行排序
struct Compare {
bool operator() (int a, int b) {
return a > b; // 從大到小排序
}
};
int main() {
set<int, Compare> mySet;
mySet.insert(5);
mySet.insert(2);
mySet.insert(8);
mySet.insert(1);
// 遍歷set并按照比較函數的順序排序輸出
for (auto it = mySet.begin(); it != mySet.end(); ++it) {
cout << *it << " ";
}
cout << endl;
return 0;
}
在上面的示例中,定義了一個名為Compare
的結構體,其中重載了operator()
函數,實現了從大到小排序。然后在聲明set時,指定了該自定義的比較函數。在遍歷set時,元素將按照此比較函數的順序進行輸出。