bianjun1075 2016-11-09 13:07 采纳率: 0%
浏览 1673
已结题

c++ find和find_if疑问

请看下面代码:

    unordered_map<string, int> tum;

    tum["Jorden"] = 99;
    tum["Kobe"] = 98;
    tum["MgGrade"] = 90;

    auto kobe_ele = find_if(tum.begin(), tum.end(), [](const pair<string, int>& man){return (man.first == "Kobe");});
    cout << "科比的分数是:" << (*kobe_ele).second << endl;

    auto tman_ele = find(tum.begin(), tum.end(), pair<const string, int>("MgGrade", 90));
    cout << "麦蒂的分数是:" << (*tman_ele).second << endl;

我的问题是,为什么findif使用的是

 const pair<string, int>

而find得使用

 pair<const string, int>

?

  • 写回答

3条回答 默认 最新

  • HannanKan 2016-11-09 14:27
    关注

    一、
    因为问题起于泛型搜索算法find_if(),所以先总结下有关find()和find_if()。 声明:
    InputIterator
    find (InputIterator beg, InputIterator end, const T& value)
    InputIterator
    find_if(InputIterator beg, InputIterator end, UnaryPredicate op)第一种形式返回在搜索域[beg,end)内与value值相等的元素的地址;
    第二种形式返回在搜索域[beg,end)内满足一元谓词函数op(elem)为真的元素的地址。
    1) 以上两种形式在搜索不到匹配元素的情况下均返回end;
    2) 注意op函数调用期间不能够改变自身的状态;
    3) op不能更改传递进来的参数;

    因为两种函数的定义有差别,所以传入的参数有差别;以上内容摘自编程小翁的博客
    链接:http://www.cnblogs.com/wengzilin/archive/2012/10/20/2732252.html
    希望有帮助

    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题