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

📅  最后修改于: 2021-05-30 13:04:42             🧑  作者: Mango

std :: equal_to允许将相等比较用作函数,这意味着可以将其作为参数传递给模板和函数。对于相等运算符==,这是不可能的,因为不能将运算符作为参数传递。

头文件:

#include 

模板类别:

template struct equal_to : binary_function
{
 
  // Declaration of the equal operation
  bool operator() (const T& x,
                   const T& y) 
       const 
  { 
     return x==y;
  }

  // Type of first parameter
  typedef T first_argument_type;

  // Type of second parameter
  typedef T second_argument_type;

  // The result is returned
  // as bool type
  typedef bool result_type;
}

句法:

std::equal_to  ()

参数:此函数接受参数T的类型作为参数,以供功能调用进行比较。

返回类型:根据条件返回布尔值(让a和b为2个元素):

  • 正确:如果a等于b。
  • False:如果a不等于b。

下面是C++中std :: equal_to的图示:

程序1:

// C++ code to illustrate std::equal_to
#include 
#include 
#include 
#include 
using namespace std;
  
// Driver Code
int main()
{
    // Intialise vectors
    vector v1 = { 50, 55, 60, 
                       65, 70 };
    vector v2 = { 50, 55, 85, 
                       65, 70 };
  
    // Declaring pointer of pairs
    pair::iterator,
         vector::iterator>
        pairs1;
  
    // Use mismatch() function to
    // search first mismatch between
    // v1 and v2
    pairs1 = mismatch(v1.begin(), v1.end(),
                      v2.begin(),
                      equal_to());
  
    // Print the mismatch pair
    cout << "The 1st mismatch element"
         << " of 1st container : ";
    cout << *pairs1.first << endl;
  
    cout << "The 1st mismatch element"
         << " of 2nd container : ";
    cout << *pairs1.second << endl;
  
    return 0;
}
输出:
The 1st mismatch element of 1st container : 60
The 1st mismatch element of 2nd container : 85

程式2:

// C++ program to illustrate std::equals_to
#include 
#include 
#include 
using namespace std;
  
// Template
template  >
  
// Function to check if a = b or not
bool f(A a, B b, U u = U())
{
    return u(a, b);
}
  
// Driver Code
int main()
{
    int X = 1, Y = 2;
  
    // If X is equals to Y or not
    cout << std::boolalpha;
    cout << f(X, Y) << '\n';
  
    X = -1, Y = -1;
  
    // If X is equals to Y or not
    cout << f(X, Y) << '\n';
  
    return 0;
}
输出:
false
true

参考: http : //www.cplusplus.com/reference/functional/equal_to/

想要从精选的最佳视频中学习和练习问题,请查看有关从基础到高级C++的C++基础课程以及有关语言和STL的C++ STL课程。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”