Ticpp以相反顺序遍历节点

ticpp traverse nodes in reverse order

本文关键字:遍历 节点 顺序 Ticpp      更新时间:2023-10-16

我使用ticpp是为了方便地处理xml文件。然而,迭代器的接口使用起来有点笨拙。假设没有办法以相反的顺序遍历某个父节点的子节点,我是否正确?(文档)

迭代器接口有一个operator--()。然而,在"end"迭代器上调用它会导致"读取位置0x00000000的访问冲突"。我错过什么了吗?有什么快速解决的办法吗?

我目前正在考虑的解决方案是简单地遍历列表两次:首先将所有子节点存储在std::array中(数组在这里是最好的?)。然后再次按倒序检查所有元素。但是就像我说的:我忍不住想我一定错过了一些功能....

原来我错过了一些东西;我也可以使用来自tixml的基于节点的接口,而不是使用ticpp提供的迭代器接口。(ticpp只是一个抽象层)。

以下循环允许的函数很少:

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