2012-02-29 2 views
1

이터레이터 (STL 또는 Java 스타일)가 QMap 또는 QList에 대해서도 유효한지 확인하는 방법이 있습니까?반복자가 QT 컨테이너에 유효한지 확인하십시오.

미리 감사드립니다.

+1

아니요 ............. –

+0

... 무슨 일이 일어 났습니까? –

+0

다른 스레드로 컨테이너를 변경 한 후. 내가 외부 플래그를 만들 수 있다는 것을 알고 있지만 캡슐화 된 기능을 사용할 수 있을지 짐작하고 있습니다. –

답변

2

아니요. 반복기의 요점은 임의의 컨테이너의 독립입니다. 컨테이너의 요소에 대한 반복자 나 참조를 아직 가지고 있지 않은 경우 (컨테이너의 반복자/참조 무효화 지정에 따라) 컨테이너를 변경해야합니다.

+0

제 질문의 요점은 컨테이너가 암시 적으로 의존한다는 것입니다. QT 라이브러리는 iterator가 살아있는 동안 컨테이너를 복사 (복제)함으로써이 문제를 부분적으로 해결합니다. 그러나 모든 곳에서 도움이되지는 않습니다. –

+0

@DmitryKachko : 좋아, STL 스타일 반복기에 대한 내 대답을 제한해야합니다. Java iterator가 컨테이너에 연결되어있는 것처럼 보입니다. 어쨌든 컨테이너의 설명서를 확인해야합니다. 컨테이너가 모든 반복기를 추적하고 유효하지 않을 때 신호를 보낼 것이라고 생각하지 않습니다. –

+0

그래도 유효성을 검사 할 수있는 방법이있을 수 있습니다. 이상한 것은 그런 방법이 존재하지 않지만 예외를 발생시키는 트릭이 있을지도 모른다고 묻고 있습니다. –

관련 문제