4

キーが与えられたので、値を置き換えようとしています。ポインタを使用しない通常のマップでは、次の呼び出しを使用しました

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
4

1 に答える 1

4

これはトリックを行います:

the_map.replace(iter, derived_object);

the_mapもちろん、マップはどこにあるのでしょうかiter

ptr_map<K,V>::replaceを返すことに注意してくださいptr_map<K,V>::auto_type。必要に応じて、置き換えられたオブジェクトを取得できます。もちろん、それを無視すると、自動的に破棄され、そこにあったことを知る必要はありません。

于 2013-01-25T00:54:17.820 に答える