给定一个键,我试图替换一个值。对于不使用指针的常规地图,我只是使用以下调用
iter->second = object; //Where object was passed in by reference
如何使用boost :: ptr_map实现相同的目标?这里的概念是我们使用derived_object
替换整个类iter->second = derived_object; //derived_object is a base_object pointer
答案 0 :(得分:4)
这样可以解决问题:
the_map.replace(iter, derived_object);
当然,the_map
是iter
指向的地图。
请注意,ptr_map<K,V>::replace
会返回ptr_map<K,V>::auto_type
,因此您可以根据需要获取已替换的对象。当然,如果你忽视它,它会被自动销毁,你永远不需要知道它就在那里。