c – 为什么需要将对插入地图?

c – 为什么需要将对插入地图?,第1张

概述虽然我不喜欢它,但发现声明一对< X,Y>是不方便的.对象,或调用make_pair,以调用map :: insert.为什么insert不使用两个参数来分别指定Key和Value. 虽然我理解它是为了与其他STL容器兼容,但它展示了value_type.但是find方法采用key_type来打破这种兼容性断言. map既有key_type又有mapped_type,所以为什么cant map有: 虽然我不喜欢它,但发现声明一对< X,Y>是不方便的.对象,或调用make_pair,以调用map :: insert.为什么insert不使用两个参数来分别指定Key和Value.

虽然我理解它是为了与其他STL容器兼容,但它展示了value_type.但是find方法采用key_type来打破这种兼容性断言. map既有key_type又有mapped_type,所以为什么cant map有:

iterator insert(const key_type&,const mapped_type&);

是的,插入迭代器有重载.但是这个两个参数的插入可能混合得很好.

我看到的一个优点是:减少了调用堆栈的使用.

编辑:
刚刚发现insert是唯一采用value_type的方法,即pair< X,Y>.许多其他方法,如find,erase,at,count,equal_range,lower_bound,upper_bound和operator []采用key_type.

解决方法 所有标准库容器都定义了一个value_type成员类型,它们的接口通常按照value_type:insert,push_back,push_front进行 *** 作.新接口emplace添加了一种构造value_type对象的方法,如下所示:
value_type(std::forward<Args>(args)...)

基本上,没有为卫星数据关联容器(即地图)提供特殊的接口,它们知道value_type的特殊结构(已定义,并非完全众所周知,bepair< const key_type,mapped_type>),查找和擦除以及带有key_type参数的operator []除外.

它可能是对标准的疏忽,或者它从未被认为是一个问题,因为你总是可以使用make_pair,make_tuple或forward_as_tuple或emplace来创建地图值类型.

(插入和仅移动映射类型有一个问题,它已浮出水面并且是this recent proposal的主题.)

总结

以上是内存溢出为你收集整理的c – 为什么需要将对插入地图?全部内容,希望文章能够帮你解决c – 为什么需要将对插入地图?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1241019.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存