1. ホーム
  2. c++

[解決済み] イテレータを自作する

2022-05-12 18:03:21

質問

私はC++を学ぼうとしているので、この質問が基本的な知識の欠如を示すものであるなら、私を許してください。

私は、私が作成したクラスのイテレータを作成する方法を解決するためにいくつかの助けが欲しいです。

Pointのコンテナを持つクラス'Shape'があります。 Shape を参照し、Shape の位置を定義するクラス 'Piece' があります。 PieceはShapeを持たず、Shapeを参照するだけです。

Piece が参照する Shape と同じ Point のコンテナであり、Piece の位置のオフセットが追加されているように見せたいのです。

Piece がコンテナであるかのように、Piece の Point を繰り返し使用できるようにしたいです。少し読んでみましたが、私を助けてくれるものは見つかりませんでした。何かポインタがあれば、非常にありがたいです。

どのように解決するのですか?

Boost.Iteratorsを使用する必要があります。新しいイテレータや既存のイテレータのアダプタを実装するためのテンプレートやコンセプトが多数含まれています。私は を書きました。 それは2008年12月のACCU magazineに掲載されました。Boost.Iteratorsを使用してオブジェクトからメンバーコレクションを公開するという、まさにあなたの問題に対する(IMOの)エレガントな解決策を論じています。

もしあなたがstlだけを使いたいのであれば Josuttis book には、独自のSTLイテレータを実装するための章があります。