2013-01-05 2 views
0

XML 파일을 쉽게 처리 할 수 ​​있도록 ticpp를 사용하고 있습니다. 그러나 iterator 인터페이스를 사용하여 조금 어색한입니다. 나는 반대 순서로 특정 부모의 자녀를 통과 할 수있는 방법이 없다고 가정합니다. (documentation)ticpp가 노드를 역순으로 통과 함

이터레이터 인터페이스에는 operator--()이 있습니다. 그러나 이것을 "end"반복자에서 호출하면 "0x00000000 위치를 읽는 액세스 위반"이 발생합니다. 내가 놓친 게 있니? 이것을 처리 할 수있는 빠른 방법이 있습니까?

내가 현재 생각하고있는 해결책은 목록을 두 번 통과시키는 것입니다. 먼저 모든 어린이를 std::array (배열이 가장 좋습니다.)에 저장합니다. 그런 다음 모든 요소를 ​​역순으로 다시 확인하십시오. 그러나 말했다 : 나는 도울 수 없다. 그러나 내가 약간의 기능을 놓쳤을 것임에 틀림 없다라고 생각한다. ...

답변

0

내가 놓쳤던 무엇인가 꽤 밝혀졌다. ticpp에서 제공 한 iterator 인터페이스 대신 tixml의 노드 기반 인터페이스를 사용할 수도 있습니다. (ticpp은 단지 추상화 계층 임). 다음 루프 허용

몇몇 기능 :

for(ticpp::Node* pchild(elem.LastChild()); 
    pchild != nullptr; 
    pchild = pchild->PreviousSibling(false)) { 
관련 문제