我試圖實現一個迭代器map<T, shared_ptr<U>>
「刪除」shared_ptr
,即對pair<T, U&>
的解除引用。我需要這個來調整我的包裝map
到基於範圍的for循環。indirect_iterator for map <T,shared_ptr <U>>
boost::indirect_iterator
好像是爲這樣的需要而設計的東西。我嘗試這樣做:
typedef std::map<int, std::shared_ptr<int>> M;
typedef boost::indirect_iterator<M::iterator, std::pair<int, int>> It;
這並不是因爲indirect_iterator
要求工作:
表達* V,其中V是iterator_traits實現目標:: value_type的,應是有效的表達和轉換參考。
這個任務可以使用boost::indirect_iterator
嗎?如果不是,我可以用boost::iterator_adaptor
做這個嗎?
'map | boost :: adapters :: map_values | boost :: adapters :: indirected' – Xeo 2013-03-22 18:31:57