📜  C++中的std :: not_equal_to示例(1)

📅  最后修改于: 2023-12-03 14:39:57.613000             🧑  作者: Mango

C++中的std::not_equal_to示例

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类型的值。然后,我们比较了变量ab,如果它们不相等,就输出"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来比较不同类型的值是否不相等,以及如何自定义类型的比较运算符。