と仮定私次のコードを持っている:移動::一back
#include <vector>
struct A {
int a;
int x;
};
int main() {
using namespace std;
A a1;
A a2;
vector<A> va;
va.push_back(a1);
va.push_back(move(a2));
}
私がのstd ::ベクトルの要素がのstd ::リストとは異なり、連続して格納されていることを認識しています。上記のコードでa2
は移動されましたが、va
にa2
のコピーは実際にはありませんか? va.push_back(a2);
との違いは何ですか?
'std :: move' a2は、フラットタイプ(つまり、外部データはありません)で、そのままコピーするだけなので、* nothing *とまったく同じです。 – Xeo
@cdhowieありがとう。修正されました。 – ggg
セマンティクスの導入については、[誰かが私にセマンティクスを説明できますか?](http://stackoverflow.com/questions/3106110/)を参照してください。 – fredoverflow