やっぱり自前定義しかないですよね。

class iterator {
public:
インターフェースいろいろ
private:
class iterator_impl;
iterator_impl* m_impl;
};

class iterator::iterator_impl : public 任意のコンテナ::iterator {
実装いろいろ
};

みたいにするのが楽なのかなぁ。

> イテレータを使うような操作をコンテナを持つクラスのメンバ関数にすることを先に検討するべき。

なるほど。なんとなく理解できます。
でも今回はコンテナを内部に複数持つクラスを柔軟にSTLのアルゴリズム等に渡したいなぁと。
たとえば
int xsum = std::accumulate(p->xbegin(),p->xend());
int ysum = std::accumulate(p->ybegin(),p->yend());
int zsum = std::accumulate(p->zbegin(),p->zend());
みたいに。