📅  最后修改于: 2023-12-03 14:39:57.613000             🧑  作者: Mango
std::not_equal_to
是C++标准库中的函数对象,用于比较两个值是否不相等。它是一个模板类,可以用于任何可以进行不相等比较的类型。在这个主题中,我们将介绍std::not_equal_to
的用法,并给出一些示例代码来说明其功能。
首先,我们需要包含头文件<functional>
,其中定义了std::not_equal_to
函数对象。
#include <functional>
然后,我们可以使用std::not_equal_to
来比较两个值是否不相等。下面是一个简单的示例:
#include <iostream>
#include <functional>
int main() {
std::not_equal_to<int> comparer;
int a = 5;
int b = 10;
if (comparer(a, b)) {
std::cout << "a and b are not equal" << std::endl;
} else {
std::cout << "a and b are equal" << std::endl;
}
return 0;
}
在上面的示例中,我们创建了一个std::not_equal_to<int>
的比较器对象comparer
,用于比较两个int
类型的值。然后,我们比较了变量a
和b
,如果它们不相等,就输出"a and b are not equal",否则输出"a and b are equal"。
除了内置类型之外,我们还可以使用std::not_equal_to
来比较自定义类型。下面是一个示例:
#include <iostream>
#include <functional>
#include <string>
class Person {
public:
Person(std::string name, int age) : name_(name), age_(age) {}
// 重载不相等比较运算符
bool operator!=(const Person& other) const {
return name_ != other.name_ || age_ != other.age_;
}
private:
std::string name_;
int age_;
};
int main() {
std::not_equal_to<Person> comparer;
Person p1("Alice", 25);
Person p2("Bob", 30);
Person p3("Alice", 25);
if (comparer(p1, p2)) {
std::cout << "p1 and p2 are not equal" << std::endl;
} else {
std::cout << "p1 and p2 are equal" << std::endl;
}
if (comparer(p1, p3)) {
std::cout << "p1 and p3 are not equal" << std::endl;
} else {
std::cout << "p1 and p3 are equal" << std::endl;
}
return 0;
}
在上面的示例中,我们定义了一个名为Person
的自定义类,它有name_
和age_
两个成员变量。我们重载了不相等比较运算符,使用name_
和age_
的不相等来判断两个Person
对象是否不相等。然后,我们创建了一个std::not_equal_to<Person>
类型的比较器对象comparer
,并测试了几个Person
对象的不相等比较。
std::not_equal_to
是C++中用于比较两个值是否不相等的函数对象。它可用于任何可进行不相等比较的类型,包括内置类型和自定义类型。通过示例代码和说明,我们了解了如何使用std::not_equal_to
来比较不同类型的值是否不相等,以及如何自定义类型的比较运算符。