21xrx.com
2025-04-26 05:58:26 Saturday
文章检索 我的文章 写文章
C++函数对象:知乎分享
2023-06-22 11:41:50 深夜i     20     0
C++ 函数对象 知乎 分享 编程技巧

C++函数对象是一种可调用对象(callable object),它们可以像函数一样被调用,但是与普通函数不同的是,函数对象可以保存状态信息。C++函数对象在STL中广泛应用,比如作为算法的参数,用于比较、排序等操作。

函数对象可以采用类或结构体的形式来实现。通常需要重载operator(),使得函数对象可以被函数调用运算符“()”调用。在C++11之后,使用lambda表达式来定义函数对象也是十分方便的。

下面是一个排序示例,演示了如何使用函数对象:

#include <iostream>
#include <algorithm>
#include <vector>
// 定义函数对象
struct Compare {
  bool operator()(int a, int b)
  
    return a > b;  // 降序排列
  
};
int main()
{
  std::vector<int> vec 1;
  
  // 使用函数对象进行排序
  std::sort(vec.begin(), vec.end(), Compare());
  // 输出结果
  for (auto i : vec)
    std::cout << i << " ";
  
  std::cout << std::endl;
  return 0;
}

在这个示例中,我们定义了一个名为Compare的函数对象,用于进行降序排列。然后我们使用std::sort函数对vector进行排序,将Compare函数对象作为参数传入sort中。最后输出结果,可以看到vector已经按照降序排列。

C++函数对象的使用非常灵活,可以根据不同的需求进行实现,并且可以搭配STL算法一起使用,提高代码的可读性和效率。

  
  

评论区

请求出错了