0

演算子とメソッドの適切なオーバーロードを使用して、抽象クラスにカスタムイテレータを埋め込みクラスとして実装できるかどうか疑問に思いました。つまり、次のように開始することを開始点として問題がない場合は、次のようになります。

template <typename T>
class my_class {
public:
    .
    .
    class iterator {
    public:
        .
        .
    };
};

カスタムイテレータを実装するいくつかの異なる方法を理解しようとしましたが、レイアウトを少し単純化できれば理解しやすくなります。begin()、end()などのメソッドは、必要な他のタイプとともにmy_classに実装できるようになりました。

そのような実装はSTLアルゴリズムと互換性がありますか?動作しているように見えるこのようなイテレータクラスを実装したことを覚えていますが、一般的に問題がないかどうかはわかりません。

4

1 に答える 1

2

タイプを定義する必要がある場所はありません。コンテナ::(iteratorおよびコンテナ: :)としてアクセス可能でconst_iteratorある必要があり、そこで定義できなかった理由はありません。ネストされたタイプは、他のタイプとまったく同じタイプです。

于 2012-10-11T07:00:59.997 に答える