文字列を保持するクラスがあります。基本的に、クラスは文字列の配列に基づいて構築されます。
class stringlist {
public:
typedef std::string str;
void push(str);
void pop();
void print();
void resize(size_t);
size_t capacity();
size_t size();
stringlist() : N(15) {}
stringlist(size_t sz) : N(sz) {}
~stringlist() { delete [] container; }
}
private:
size_t N;
str* container = new str[N];
};
演習の次の部分では、読者に次のことを求めます。
クラスの双方向イテレータを書く
本のこの時点では、オーバーロードされた演算子などについての話はありません。
のようなものがある場合str* iterator(*str)
、インクリメント、デクリメントなどをどのように管理しますか。これらのメソッドに対して別の関数を記述できると想定していますが、iterator
そもそもデータ メンバーを記述する目的に反するようです。イテレータは別のクラスになりますか?
また、これらの関数を使用するためにイテレータにドットを付けることができるように、イテレータ内にインクリメント デクリメント関数を含めることは可能でしょうか?