事实上,
有原因吗
template<class C2>
void std::map<Key,T,Compare,Allocator>::merge( std::map<Key, T, C2, Allocator>& source );
是否将source
作为参考,而不是const
参考?
也许我在这里度过了一个大四的时刻,但我看不出source
是如何被函数以任何方式改变的,而且它现在的帮助不大。
merge()
确实修改了源映射。这是一个优化的操作,通过重新链接两个映射的内部来执行合并,将合并后的值从一个映射移植到另一个映射,而无需实际复制键或值,只需篡改内部指针。
因此,最终,源地图(通常(只是其昔日辉煌的影子。它不可能是const
,因为这会发生。