C 11에서는 불필요한 복사를 방지하고 객체 생성을 최적화하여 성능을 향상시키기 위해 rvalue 참조 및 이동 의미 체계를 도입했습니다. 효율적인 코드를 작성하려면 이러한 기술 간의 차이점을 이해하는 것이 중요합니다.
다음 C 11 코드 예를 고려하세요.
첫 번째 예:
std::vector<int> return_vector() { std::vector<int> tmp {1, 2, 3, 4, 5}; return tmp; } std::vector<int> &&rval_ref = return_vector();
두 번째 예:
std::vector<int>&& return_vector() { std::vector<int> tmp {1, 2, 3, 4, 5}; return std::move(tmp); } std::vector<int> &&rval_ref = return_vector();
세 번째 예:
std::vector<int> return_vector() { std::vector<int> tmp {1, 2, 3, 4, 5}; return std::move(tmp); } std::vector<int> &&rval_ref = return_vector();
첫 번째 예:
두 번째 예:
세 번째 예:
권장 방법 임시 객체를 이동 전용 lvalue 참조(예: std::Vector
std::vector<int> return_vector() { std::vector<int> tmp {1, 2, 3, 4, 5}; return tmp; } std::vector<int> rval_ref = return_vector();
이 접근 방식은 성능과 정확성의 최상의 조합을 제공합니다.
위 내용은 Rvalue 참조 및 이동 의미론은 C 11 반환 문에 어떤 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!