21xrx.com
2024-12-27 21:13:53 Friday
登录
文章检索 我的文章 写文章
C++函数对象:知乎分享
2023-06-22 11:41:50 深夜i     --     --
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算法一起使用,提高代码的可读性和效率。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复