ベクターコンテンツの所有権をあるベクターから別のベクターに譲渡することは可能ですか?STLコンテナ内の所有権を移転しますか?
vector<T> v1;
// fill v1
vector<T> v2 = OvertakeContents(v1);
// now v1 would be empty and v2 would have all the contents of v1
スプライス機能を持つリストでは可能です。 これは、ベクトル全体に対しても一定の時間内に可能でなければなりません。
なぜそうでないのですか?
サイドノートのための単純なコピーを作成してください:「スワップ」は既に述べました。しかし、私はそれをC++ 0xに追加したいと思います。単に "OvertakeContents"を "std :: move"に置き換えるだけで、あなたが望むことができます。 – sellibitze