■33808 / ) |
Re[4]: クラスの継承とイテレータ |
□投稿者/ びーしむ (3回)-(2009/03/10(Tue) 15:04:13)
|
> class Data は、その派生クラスにてコレクションを持つことを知っているべきか否か
class Data はデータを保持するのが目的で、そのデータをどう使うかは Data の利用者に任せたい。
データを数式で表せるとき vector や list に展開して保持しなくていいからメモリが節約できると考えた。
例として accumulate や avarage を挙げましたが、他のどのような関数が必要になるかはわからない。
>Dataの利用者はDataの腹ん中を知らんでも使えるのがベストちゃうんか?
class Data が iterator(派生クラスのイテレータをラッパーするようなクラスでもよい) の
begin, end を返せればできるなと思ったのですがその手法が良くないみたいですね。
他に考えた方法は、
1.処理時間を考えないで、std::vector<int> のコピーでデータを取得する関数を用意する
class Data {
public:
virtual const std::vector<int> Get()const=0;
};
2.データは class Data が保持し、派生クラスは Update 関数を実装して m_Data を更新する。
class Data {
public:
const std::vector<int>& Get()const{return m_Data;}
virtual void Update(){}
protected:
std::vector<int> m_Data;
};
なかなか難しいですね。。。
|
|