>백엔드 개발 >C++ >C에서 이동된 벡터의 상태는 무엇입니까?

C에서 이동된 벡터의 상태는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-23 21:42:15818검색

What is the State of a Moved-From Vector in C  ?

이동된 벡터의 빈 상태

C 표준 라이브러리 유형에서 이동된 객체는 일반적으로 유효하지만 지정되지 않은 상태에 배치됩니다. . 그러나 벡터가 명시적으로 이 규칙에 속하는지 여부에 대한 호기심이 있습니다.

이동 생성자 동작

벡터의 이동 생성자의 경우 이동된 벡터는 다음과 같은 이유로 일관되게 비어 있습니다. 지속적인 복잡성이 요구됩니다. 생성자는 소스 벡터에서 리소스를 훔쳐 새 인스턴스를 구성하고 원본 벡터는 빈 상태로 둡니다.

이동 할당 연산자 동작

벡터 이동 동작 할당 연산자는 더 미묘하며 할당자에 따라 다릅니다.

사례 1: 이동 할당 전파 = True

이 경우 이동 원본 벡터는 항상 비어 있습니다. 할당 연산자는 요소를 파괴하고, 용량을 할당 취소하고, 소스 벡터에서 메모리 버퍼의 소유권을 전송하고 할당자를 이동합니다. 이로 인해 원래 벡터는 빈 상태가 됩니다.

사례 2: 이동 할당 전파 = 거짓, 동일 할당자

사례 1과 유사하게 이동된 벡터는 다음과 같습니다. 이동 할당 연산자에 의해 비워졌습니다. 할당자는 이동되지 않으며 대소문자 구분은 동적으로 발생합니다.

사례 3: 이동 할당 전파 = 거짓, 동일하지 않은 할당자

가장 복잡한 경우에는 서로 다른 할당자가 포함됩니다. 여기서 이동 할당은 리소스를 이동하거나 할당자를 할당할 수 없습니다. 대신, 개별 요소를 소스 벡터에서 대상 벡터로 이동합니다. 할당자 기능 및 요소 구성 요구 사항에 따라 이동 원본 벡터가 반드시 비어 있지 않을 수도 있습니다. 그러나 일부 구현에서는 소스 벡터에 대해 명시적으로 clear()를 호출하여 이를 비워두도록 선택할 수 있습니다.

위 내용은 C에서 이동된 벡터의 상태는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.