가정하자 나는 다음과 같은 코드를 가지고 :이동 ::와 push_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));
}
나는 표준 : : 벡터의 요소가 표준 : 목록과는 달리, 연속 저장되어 있음을 알고 있습니다. 위의 코드에서 a2
은 이동되었지만 va
에 a2
의 복사가 실제로 있습니까? va.push_back(a2);
과 의 차이점은 무엇입니까? 당신이 va.push_back(move(a2))
버전 vector<T>::push_back(T&&)
가 호출 될 사용할 때 va.push_back(a2)
버전 vector<T>::push_back(const T&)
를 사용
'std :: move'a2는 평면 유형 (즉, 외부 데이터 없음)이기 때문에 그대로 복사합니다. – Xeo
@cdhowie 감사합니다. 수정 됨. – ggg
의미 이동에 대한 소개는 [다른 사람이 나에게 의미 이동을 설명 할 수 있습니까?] (http://stackoverflow.com/questions/3106110/)를 참조하십시오. – fredoverflow