我试图实现一个迭代器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