📅  最后修改于: 2023-12-03 14:39:39.103000             🧑  作者: Mango
在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