> 백엔드 개발 > C++ > C 표준 라이브러리의 `std::Vector`에서 자체 이동 할당이 작동합니까?

C 표준 라이브러리의 `std::Vector`에서 자체 이동 할당이 작동합니까?

Barbara Streisand
풀어 주다: 2024-11-11 17:23:03
원래의
213명이 탐색했습니다.

Does self-move assignment work with `std::vector` in the C   Standard Library?

C 표준 라이브러리의 자체 이동 할당

C 11에서 표준은 특히 표준 내에서 자체 이동 할당과 관련하여 특정 보장을 제공합니다. 도서관. 이러한 보증이 무엇을 수반하는지 조사해 보겠습니다.

C 11 표준의 섹션 17.6.4.9에 따르면 "함수 인수" 항목 아래에 함수 인수가 rvalue 참조 매개 변수에 바인딩된 경우 다음과 같이 명시되어 있습니다. 구현에서는 이 참조가 인수와 배타적이라고 가정할 수 있습니다.

이는 std::Vector::operator=(Vector&& other)의 구현 내에서 다른 참조가 허용된다는 것을 의미합니다. 는 가치입니다. 결과적으로 other가 prvalue인 경우 자체 이동 할당은 불가능합니다.

v가 리소스 없이(용량이 0으로) 렌더링될 가능성이 높습니다. v의 용량이 이미 0인 경우 이 작업은 작동하지 않습니다.

업데이트:

가장 최근 작업 초안(N4618)은 MoveAssignable 요구 사항. 이는 t = rv(여기서 rv는 rvalue임) 표현식에서 t가 동일한 객체를 참조하지 않는 경우 할당 전 rv 값과만 일치하도록 요구함을 지정합니다. 그럼에도 불구하고 할당 후에는 rv의 상태가 지정되지 않습니다. 추가 참고 사항은 추가 설명을 제공합니다.

"rv는 t와 rv가 동일한 객체를 참조하는지 여부에 관계없이 이를 사용하는 라이브러리 구성 요소의 요구 사항을 충족해야 합니다."

위 내용은 C 표준 라이브러리의 `std::Vector`에서 자체 이동 할당이 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿