加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 为什么std :: map有查找成员函数?

发布时间:2020-12-16 05:03:41 所属栏目:百科 来源:网络整理
导读:我和一位同事正在讨论成员与非成员职能的相对优点.出现了一个问题:为什么std :: map有一个find成员函数. 我的回答是,虽然您可以在地图上使用std :: find,但您必须搜索键值对,或者使用find_if,例如一个lambda.但是,这是线性的,map.find提供了一个比密钥更好
我和一位同事正在讨论成员与非成员职能的相对优点.出现了一个问题:为什么std :: map有一个find成员函数.

我的回答是,虽然您可以在地图上使用std :: find,但您必须搜索键值对,或者使用find_if,例如一个lambda.但是,这是线性的,map.find提供了一个比密钥更好的线性时间搜索.我最后断言,如果它可能是一个非成员,那么它本来就是! (虽然,std :: string表明我的概括可能有些仓促).

我的同事指出,使用map.lower_bound可以实现与非成员函数相同的查找方式.

map.find有没有理由成为会员?

解决方法

实现std :: find搜索std :: map上的键作为非成员函数的一个很大的反对意见是这样做会阻止你实现当前版本的std :: find,它会搜索一个键值对.

作为关联容器,std :: map包含键值对.非成员std :: find是为所有容器定义的,它是一个搜索容器中项目的函数,该项目必须是std :: map的键值对;使用std :: find通过其键查找项目将是不一致的.

显然,可以实现仅适用于地图的std :: find_by_key函数,但是这样的函数总是具有基于地图类型的特化.与添加成员函数相比,API设计没有改进.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读