、これは(プライベートメンバーであるなど、これは_M_startとして動作しません)私は何をしたいです:ベクトルの一方向スワップは可能ですか? C++ 98では
void vectormove(std::vector<int>& a, std::vector<int>& b)
{
a._M_impl._M_start = b._M_impl._M_start;
a._M_impl._M_finish = b._M_impl._M_finish;
a._M_impl._M_end_of_storage = b._M_impl._M_end_of_storage;
}
これは私が
//vectors are predefined already
std::vector<int> a;
std::vector<int> b(10000000,20);
//in later part of code
//a=b; //expensive copy
//std::swap(a,b); //inexpensive swap
vectormove(a,b); //i need an inexpensive one way swap instead
を呼び出したい方法です私はコピー、移動、スワップをゆるやかに使用して虐殺された用語を持っているかもしれませんが、私はこの主題をよりよく把握していません。私は私の意図を伝えることができたと思う。
同じデータを参照する2つのベクトルが必要なのはなぜですか。それをどのように管理しますか? – juanchopanza
['std :: move'](http://en.cppreference.com/w/cpp/utility/move)はあなたが探していることをしていませんか? – computerfreaker
ベクトルはメモリを所有しているため、 "一方向スワップ"はありません。これが可能であれば、二重削除とヒープ破損の可能性があります。 –