問題タブ [iterator-facade]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
boost - ブーストイテレータファサードと dereference() 関数
参照ではなく、実際の値の型のみを逆参照できるイテレータを作成しようとしています。を使用してこれは可能boost::iterator_facade
ですか、それとも address\reference によって返される値が必要ですか?
より具体的に言うと、イテレータは参照の a を返しますstd::pair
。つまり、イテレータvalue_type
はどこにも保存されず、逆参照時にオンザフライで作成されます ( のようにstd::map::iterator
)。
c++ - 二分木のpre-order-iteratorの実装に問題があります
私は得ています、
これが完全なエラー(ペーストビン)です。
編集
これが私のBinaryTree
クラスです、
そして、これが私のmain()
、
解決
に変更virtual void increment() = 0
されました、
助けてくれてありがとう、:)
c++ - boost::iterator_facade<> を使用して、反復子の参照を返しますが、const_iterator の const_ref を返しますか?
こんなクラスがありますが、
value_type
クラスの定数には依存しませんBSTNode
。それが私がそのconst_cast<value_type&>()
部分を保持しなければならなかった理由です。const_iterator
aを返すconst_ref
がiterator
modifiableを返すようにするにはどうすればよいref
ですか? 関連するtypedefは次のとおりです。
そしてノードクラス、
boost - boost::iterator_facade でのコンパイル エラー
私はboost::iterator_facadeを学んでいます。本のコード例を次に示します。
テストコードは次のとおりです。
ただし、次のコンパイル エラーが発生します。
そこで、「参照」を step_iterator::reference に置き換えようとしましたが、今回は次のエラーが発生します。
boost - boost::iterator_facade を拡張するときに、イテレータに非仮想デストラクタがあるという警告を削除するにはどうすればよいですか?
-Weffc++ を使用してコンパイルし、boost::iterator_facade を拡張すると、コンパイラの警告が表示されます: 基本クラスに非仮想デストラクタがあります。これを修正するにはどうすればよいですか?
サンプルコードは次のとおりです。
Fedora 19 で次のようにコンパイルします。
実際の警告は次のとおりです。
ありがとう。