C++에서 파이썬과 같은 범위를 작성한다고 가정합니다. 랜덤 액세스 컨테이너의 모든 특성을 제공합니다 (물론 불변). 다음과 같은 상황에 대한 질문이 제기됩니다.
두 개의 다른 이터레이터가 있습니다. 즉, 다른 범위 컨테이너의 인스턴스를 가리 킵니다. 이 두 범위는 과 동일하고입니다. 즉 이들은 동일한 범위를 나타낸다. 다음과 같은 상황이 허용겠습니까 : 나는 STL :)의 심플한 디자인 규칙을 잃었 경우
fact: range1 == range2 e.g.
---------------------------
range range1(10, 20, 1), range2((10, 20, 1);
range::iterator i = range1.begin(), j = range2.begin();
assert(i == j); // would you allow this?
미안
기본적으로
감사합니다. 이 사실을 처음 알았습니다. 표준에서 어디에서 찾을 수 있습니까? – AraK
문자열을 사용하고 있었는지, 모든 문자열에서 인턴 연산을 수행하면 두 개의 == 문자열을 비교하면 동일한 문제가 발생할 수 있습니다. 필수는 아니지만 일어날 수 있습니다. 나는 그것이 일어날 지 걱정하지 않을 것이지만, 나는 그것이 일어날 것을 요구하지 않을 것이다. – KitsuneYMG
VC는 다른 컨테이너를 가리키는 반복자를 비교하려고 할 때 적어도 불평합니다. 표준에서 비교하는 것이 불법이라고 말하는가 알고 있습니까? 또는 VC가 지나치게 도움이됩니까? 24.1의 단락 7은 지금 말하기에 가장 가까운 것으로 보이지만 실제로는 범위와 알고리즘을 설명합니다. 질문 : 'i == j'와 같은 컨테이너를 가리 키지 않아도 비교할 수 있습니까? –