次のコードがあるとします。
#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 :: listとは異なり、std::vectorの要素は連続して格納されていることを認識しています。上記のコードでは移動されていますが、ベクトルへa2
のコピーは実際にはありませんか?との違いは何ですか?a2
va
va.push_back(a2);
va.push_back(move(a2));