为什么源 std::map for std::map::merge const?

  • 本文关键字:std map merge const for c++ c++17
  • 更新时间 :
  • 英文 :


有原因吗

template<class C2>
void std::map<Key,T,Compare,Allocator>::merge( std::map<Key, T, C2, Allocator>& source );

是否将source作为参考,而不是const参考?

也许我在这里度过了一个大四的时刻,但我看不出source是如何被函数以任何方式改变的,而且它现在的帮助不大。

事实上,

merge()确实修改了源映射。这是一个优化的操作,通过重新链接两个映射的内部来执行合并,将合并后的值从一个映射移植到另一个映射,而无需实际复制键或值,只需篡改内部指针。

因此,最终,源地图(通常(只是其昔日辉煌的影子。它不可能是const,因为这会发生。

最新更新