스와핑과 관련하여 세 가지 질문이 있습니다.스왑의 성능에 관한 질문
(1)이 개 동일한 유형의 STL 컨테이너 a
및 b
에 관해서는, 두 작업은 아래 내가 두 번째 컨테이너 (대한 전문 이해
swap(a,b);
a.swap(b);
일 것으로는 예를 들면, 단지 반복자의 숫자를 포함 스왑) 반면에 첫 번째는 범용 데이터 유형을 사용하고 내부 복사본 생성을 수행하는 전역 알고리즘입니다.
제 질문은 컴파일러가 두 번째 관계없이 사용합니까 아니면 적절한 전문화가 존재하는지 확인하는 데주의해야합니까?
(2) swap(a,b)
은 swap(b,a)
과 동일한 성능을 보입니까? 복사 구성이 관련되어 있고 오브젝트의 크기가 상당히 다른 경우 문제가 될 수 있습니다.
(3) 오버로드 된 연산자 ==
이 있고 비교적 빠르면 스와핑 전에 a == b
을 확인하면 불필요한 작업을 피할 수 있습니다. std::swap
이 체크를 먼저 적용합니까, 아니면 관계없이 작업을 수행합니까?
시간 내 주셔서 감사합니다.
이 모든 것이 STL의 특정 구현에 의존하지 않습니까? 나는 당신이 표준에서 이것의 어떤 것도 도출 할 수 있다고 생각하지 않는다. –
숫자 3은 구현에 따라 다를 수 있습니다. 1이 명시 적으로 필요합니다. –
신속한 응답에 진심으로 감사드립니다. – Chrys