>백엔드 개발 >C++ >다른 컨테이너의 반복자를 C에서 비교할 수 있습니까?

다른 컨테이너의 반복자를 C에서 비교할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-01 14:35:29617검색

Can Iterators from Different Containers be Compared in C  ?

다른 컨테이너의 반복자 비교

C에서는 다른 컨테이너를 다룰 때 반복자 비교에 적용되는 원칙을 이해하는 것이 중요합니다. "개별 컨테이너의 반복자를 비교하는 것이 허용됩니까?"라는 질문이 생깁니다.

이에 답하기 위해 C 11 표준(n3337)을 참조합니다.

  • 일반 반복자 요구 사항: i를 무한정 여러 번 적용하면 i == j가 되는 경우에만 반복자 i에서 반복자 j에 도달할 수 있습니다. 접근 가능한 반복자는 동일한 시퀀스의 요소를 참조합니다.
  • 정방향 반복자와 같음: 정방향 반복자의 같음 연산자(==) 도메인은 다음에서 유래하는 반복자로 제한됩니다. 기본 시퀀스는 동일합니다.

RandomAccessIterator는 ForwardIterator의 요구 사항을 상속하므로 서로 다른 컨테이너의 반복자를 비교하는 것은 정의되지 않은 동작입니다.

LWG 문제 #446에서는 이 문제를 구체적으로 다루고 제안합니다. 표준에 대한 다음 수정 사항:

"두 개의 다른 범위 r1 및 r2에서 얻은 두 개의 반복자 값을 인수로 사용하는 비교 함수 또는 이진 연산자를 직접 또는 간접적으로 평가한 결과는 명시적으로 정의되지 않는 한 정의되지 않습니다. "

이 수정 사항은 공통 범위의 하위 범위가 아닌 한 다른 컨테이너의 반복자를 비교하는 것이 정의되지 않은 동작임을 강조합니다.

위 내용은 다른 컨테이너의 반복자를 C에서 비교할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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