在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时,元素将按照此比较函数的顺序进行输出。