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
ますか?