在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。