"集合"に対するインターフェース

良い書き方はないんだろうか?

class HogeMgr
{
public:
    const hoge_t& getHoge(size_t idx) const;
};

配列以外の場合効率悪すぎる。

class HogeMgr
{
public:
    typedef std::vector<hoge> hoges_t;
    const hoges_t& getHoges() const;
};

内部実装露出しすぎな気がする。

class HogeMgr
{
public:
    typedef std::vector<hoge>::iterator hoges_iter_t;
    const hoges_iter_t& getHogesBegin() const;
    const hoges_iter_t& getHogesEnd() const;
};

書くのめんどい。

やっぱRangeですかねぇ。

class HogeMgr
{
public:
    typedef std::vector<hoge>::iterator hoges_iter_t;
    typedef std::pair<hoges_iter_t, hoges_iter_t> hoges_range_t;
    const hoges_range_t& getHogesRange() const;
};

でもこれだとアクセス時にhook処理かけられないような…iteratorをwrapしてoperator*()でhookすればいいですね。大変めんどいけど…

あと書き込みが混じるともう訳分かんなくなります。

はてなアンケートとかつくればいいんだろうか