STL学习笔记:map容器里find函数的第三个参数实现原理,函数对象(仿函数)

您所在的位置:网站首页 mapfind找不到值 STL学习笔记:map容器里find函数的第三个参数实现原理,函数对象(仿函数)

STL学习笔记:map容器里find函数的第三个参数实现原理,函数对象(仿函数)

2024-07-12 06:31| 来源: 网络整理| 查看: 265

最近在看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