이동된 벡터의 빈 상태
C 표준 라이브러리 유형에서 이동된 객체는 일반적으로 유효하지만 지정되지 않은 상태에 배치됩니다. . 그러나 벡터가 명시적으로 이 규칙에 속하는지 여부에 대한 호기심이 있습니다.
이동 생성자 동작
벡터의 이동 생성자의 경우 이동된 벡터는 다음과 같은 이유로 일관되게 비어 있습니다. 지속적인 복잡성이 요구됩니다. 생성자는 소스 벡터에서 리소스를 훔쳐 새 인스턴스를 구성하고 원본 벡터는 빈 상태로 둡니다.
이동 할당 연산자 동작
벡터 이동 동작 할당 연산자는 더 미묘하며 할당자에 따라 다릅니다.
사례 1: 이동 할당 전파 = True
이 경우 이동 원본 벡터는 항상 비어 있습니다. 할당 연산자는 요소를 파괴하고, 용량을 할당 취소하고, 소스 벡터에서 메모리 버퍼의 소유권을 전송하고 할당자를 이동합니다. 이로 인해 원래 벡터는 빈 상태가 됩니다.
사례 2: 이동 할당 전파 = 거짓, 동일 할당자
사례 1과 유사하게 이동된 벡터는 다음과 같습니다. 이동 할당 연산자에 의해 비워졌습니다. 할당자는 이동되지 않으며 대소문자 구분은 동적으로 발생합니다.
사례 3: 이동 할당 전파 = 거짓, 동일하지 않은 할당자
가장 복잡한 경우에는 서로 다른 할당자가 포함됩니다. 여기서 이동 할당은 리소스를 이동하거나 할당자를 할당할 수 없습니다. 대신, 개별 요소를 소스 벡터에서 대상 벡터로 이동합니다. 할당자 기능 및 요소 구성 요구 사항에 따라 이동 원본 벡터가 반드시 비어 있지 않을 수도 있습니다. 그러나 일부 구현에서는 소스 벡터에 대해 명시적으로 clear()를 호출하여 이를 비워두도록 선택할 수 있습니다.
위 내용은 C에서 이동된 벡터의 상태는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!