少し迷ってること

修論に向けてガスガスとプログラム書いたり、データ取ったりしてるわけですがちょっと疑問に思ってることが。

いまBoost C++ Librariesを使ってプログラムを書いてるわけですが、この中にあるpointer containerライブラリとrotateアルゴリズムって一緒に使っちゃやっぱりまずいのかなぁ。一応、大体やりたいのは


#include <boost/ptr_container/ptr_vector.hpp>
#include <algorithm>
#include <iostream>

class Def {
int num;
public:
Def(int n) : num(n) {}

int number() { return num; }
};

int main() {
using namespace std;
using namespace boost;

ptr_vector vec;
vec.push_back(new Def(8));
vec.push_back(new Def(7));
vec.push_back(new Def(4));
vec.push_back(new Def(3));
vec.push_back(new Def(5));

for (ptr_vector::size_type iter = 0; iter != vec.size(); ++iter)
cout << vec[iter].number() << " ";
cout << endl;

rotate(vec.begin(), vec.begin()+2, vec.end());
for (ptr_vector::size_type iter = 0; iter != vec.size(); ++iter)
cout << vec[iter].number() << " ";
cout << endl;

return 0;
}

みたいな感じなのですが、Boost Pointer Container Libraryを見てみるとMutating Algorithmは使えないよって書いてあるんだよなぁ。
rotateはここの記述からするとrotateはMutating Algorithmになるわけだけど、上のコードを動かしてみると一応動くことは動く。Pointer Containerのかわりにstd::vector + boost::shared_ptrにすればいいのかもしれないけど、なんかすっきりしない。