演算子とメソッドの適切なオーバーロードを使用して、抽象クラスにカスタムイテレータを埋め込みクラスとして実装できるかどうか疑問に思いました。つまり、次のように開始することを開始点として問題がない場合は、次のようになります。
template <typename T>
class my_class {
public:
.
.
class iterator {
public:
.
.
};
};
カスタムイテレータを実装するいくつかの異なる方法を理解しようとしましたが、レイアウトを少し単純化できれば理解しやすくなります。begin()、end()などのメソッドは、必要な他のタイプとともにmy_classに実装できるようになりました。
そのような実装はSTLアルゴリズムと互換性がありますか?動作しているように見えるこのようなイテレータクラスを実装したことを覚えていますが、一般的に問題がないかどうかはわかりません。