STL学习笔记:map容器里find函数的第三个参数实现原理,函数对象(仿函数) |
您所在的位置:网站首页 › mapfind找不到值 › STL学习笔记:map容器里find函数的第三个参数实现原理,函数对象(仿函数) |
最近在看STL里的map容器,一开始是打算直接存储一个键值对map 类型,发现在调用map.find(key)是无法查到对应元素值,仔细debug一下,发现在存储key是存储的是char* 的地址,因此map.find()函数在调用内部自带的比较函数是直接比较指针的地址,这样就永远找不到合适的值。 首先解释函数对象: 重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象。又称仿函数。 以上是百度百科里的定义,附上链接:https://baike.baidu.com/item/%E5%87%BD%E6%95%B0%E5%AF%B9%E8%B1%A1/7721014?fr=aladdin STL map源代码: template class map : public _Tree通过查看源代码,STL自带的比较函数为less。 less的源代码: template struct less { // functor for operator |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |