6
iterator
とconst_iterator
などのクラスペアを実装するときのコードの重複を避けるベストプラクティスは何ですか?イテレータクラスとconst_iteratorクラスを実装しているときにコードの重複を避けるためのベストプラクティス
- 通常は、多くのconst_castを使用してconst_iteratorに関してイテレータを実装していますか?
- いくつかの種類の特性クラスを使用し、共通テンプレートの異なるインスタンス化としてiteratorとconst_iteratorの両方を定義することになりますか?
これは標準的な解決方法があるのに十分な共通問題のようですが、私はそれ専用の記事を見つけることができませんでした。
申し訳ありませんが、広すぎるのGNU libstdc++'s実装を見てみるなど、共通のコードをリファクタリング。多くの異なるアプローチ。継承。テンプレート。普遍的に合意された「ベストプラクティス」はありません。個々のケースはそれぞれ異なります。 –
私は 'value_type'、' pointer_type'、 'reference_type'でパラメータ化されたテンプレートクラスを好んでいます。たとえば、 'template class CustomIterator {};' 'typedef CustomIterator iterator_type;' 'typedefカスタムイテレータ const_iterator_type;' –
http://stackoverflow.com/questions/2150192/how-避けるべきコードの重複を実装するconst-and-const非反復子 –