我正在尝试实现map<T, shared_ptr<U>>
“删除”的迭代器shared_ptr
,即取消引用pair<T, U&>
. 我需要这个来使我的包装器适应map
基于范围的 for 循环。
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
吗?