📜  C ++中的std :: equal_to以及示例(1)

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

C++中的std::equal_to以及示例

在C++中,std::equal_to是一个函数对象,用于比较两个值是否相等。它是一个模板类型,定义如下:

template <typename T>
struct equal_to {
    bool operator()(const T& x, const T& y) const { return x == y; }
};

可以看到,equal_to只对一种类型做比较,比较操作使用==运算符完成。使用时,可以直接调用operator()函数,如下:

std::equal_to<int> eq;
if (eq(1, 1)) {
  // 1 == 1, 返回true
}

另外,std::equal_to也可以作为STL的算法的比较函数参数传递:

std::vector<int> vec1{1, 2, 3};
std::vector<int> vec2{1, 4, 3};

if (std::equal(vec1.begin(), vec1.end(), vec2.begin(), std::equal_to<int>{})) {
  // 两个vector逐个比较,返回false
}

上述代码中,std::equal比较两个vector是否相等,使用了std::equal_to<int>作为比较函数。

一般情况下,使用默认的比较函数即可,也就是使用==运算符。但是,在某些情况下,使用std::equal_to可以让代码更加清晰易读。

参考文献:

[1] std::equal_to

[2] std::equal