find_if 仿函数

一个或者结构重载小括号运算符 使其看起来像一个函数
注意 vector里面存的是非指针 重载的小括号的参数也要是非指针 vector里存的变量类型要和小括号的参数类型一致


struct FindRv
{
    SnakeBody body;
    FindRv(SnakeBody& body) {
        this->body = body;
    }

    bool operator()(SnakeBody& sb) {
        return body == sb;
    }
};
struct FindPv
{
    SnakeBody body;
    FindPv(SnakeBody body) {
        this->body = body;
    }

    bool operator()(SnakeBody* sb) {
        return body == sb;
    }
};

int main()
{

    std::vector<SnakeBody> rv;
    std::vector<SnakeBody*> pv;

    rv.push_back(SnakeBody(1, 2, 1));
    pv.push_back(new SnakeBody(1, 1, 1));

    SnakeBody tsb(1,1,2);

    std::find_if(rv.begin(), rv.end(), FindRv(tsb));
    std::find_if(pv.begin(), pv.end(), FindPv(tsb));

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 6.1 函数基础 函数(function) :是一个命名的代码块,我们可以通过调用函数来执行其中的代码。 函数的定...
    卖渔翁阅读 989评论 0 0
  • 一、C语言基础 1、struct 的内存对齐和填充问题其实只要记住一个概念和三个原则就可以了: 一个概念:自然对齐...
    XDgbh阅读 2,241评论 1 38
  • 函数是一个命了名的代码块,我们通过调用函数执行相应的代码。函数可以有零个或者多个参数,而且(通常)会产生一个结果。...
    丶不霁何虹阅读 1,177评论 0 1
  • 一 排版 1,关系密切的逻辑语句要尽量集中在一起 2,缩进:if else case for while语句需要缩...
    舍予先生阅读 639评论 0 0
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,679评论 0 5