2

ここのブーストドキュメントに基づいています:

http://www.boost.org/doc/libs/1_41_0/doc/html/boost_propertytree/container.html

「ノードには同じキー値を持つ複数の子が存在する場合があります。ただし、これらの子は必ずしも連続しているわけではありません。find によって返される反復子は、これらのいずれかを参照する可能性があり、同じ名前の他の子の相対位置について保証はありません。子供。"

サンプル XML:

<library>
   <book><title>Title_1</title></book>
   <book><title>Title_2</title></book>
   <book><title>Title_3</title></book>
</library>

サンプル ブースト コード:

ptree pt;
pt.push_back(ptree::value_type("book", ptree("title")))

// This finds the first book and cannot iterate to the second one:
ptree::const_iterator it = pt.find("book");

それを知った上で、どのようにしてすべての本を手に入れ、すべての本を確実に手に入れることができるでしょうか?

4

1 に答える 1

4

関数を使用する必要がありequal_rangeます:

std::pair < ptree::const_assoc_iterator, ptree::const_assoc_iterator> bounds = 
    pt.equal_range("book");

for (ptree::const_assoc_iterator it = bounds.first; it != bounds.second ; ++it)
{
    // process *it
}
于 2011-09-06T23:32:46.203 に答える