在C++中,你可以通过创建一个自定义的比较函数或比较类来定义std::set
的排序规则
方法1:使用比较函数
#include <iostream>
#include <set>
#include <vector>
// 自定义比较函数
bool my_compare(int a, int b) {
return a < b;
}
int main() {
// 使用自定义比较函数创建set
std::set<int, decltype(&my_compare)> my_set(my_compare);
// 向set中添加元素
my_set.insert(5);
my_set.insert(3);
my_set.insert(8);
my_set.insert(1);
// 输出set中的元素(按自定义排序规则)
for (const auto& elem : my_set) {
std::cout << elem << " ";
}
return 0;
}
方法2:使用比较类
#include <iostream>
#include <set>
#include <vector>
// 自定义比较类
struct MyCompare {
bool operator()(int a, int b) const {
return a < b;
}
};
int main() {
// 使用自定义比较类创建set
std::set<int, MyCompare> my_set(MyCompare());
// 向set中添加元素
my_set.insert(5);
my_set.insert(3);
my_set.insert(8);
my_set.insert(1);
// 输出set中的元素(按自定义排序规则)
for (const auto& elem : my_set) {
std::cout << elem << " ";
}
return 0;
}
在这两个示例中,我们都定义了一个自定义排序规则,使得std::set
中的元素按升序排列。你可以根据需要修改比较函数或比较类,以实现不同的排序规则。