std::set 比较器的使用相等方法 指针形式 写法
时间: 2024-05-12 17:20:15 浏览: 86
Set及比较器的使用
当使用指针作为 std::set 的元素时,需要定义一个比较器来比较元素的值。以下是使用相等方法的指针形式的写法:
```c++
#include <set>
struct MyStruct {
int value;
};
struct MyStructPtrComparator {
bool operator()(const MyStruct* lhs, const MyStruct* rhs) const {
return lhs->value < rhs->value;
}
bool operator()(const MyStruct* lhs, const int& rhs) const {
return lhs->value < rhs;
}
bool operator()(const int& lhs, const MyStruct* rhs) const {
return lhs < rhs->value;
}
bool operator()(const MyStruct* lhs, const MyStruct* rhs) const {
return lhs->value == rhs->value;
}
};
int main() {
std::set<MyStruct*, MyStructPtrComparator> mySet;
mySet.insert(new MyStruct{1});
mySet.insert(new MyStruct{2});
mySet.insert(new MyStruct{3});
// 使用相等方法进行查找
auto it = mySet.find(new MyStruct{2});
if (it != mySet.end()) {
// 找到了
} else {
// 没有找到
}
return 0;
}
```
在这个例子中,我们定义了一个 MyStruct 类型和一个 MyStructPtrComparator 类型,用于比较指向 MyStruct 的指针。在 MyStructPtrComparator 中,我们定义了四个运算符重载函数,分别用于比较两个指针和一个指针和一个 int 的大小关系,以及判断两个指针是否相等。在 main 函数中,我们创建了一个 std::set,并使用相等方法查找元素。
阅读全文