pugixmlノードオブジェクトにはnumber-of-child-nodesメソッドがありますか?ドキュメントでそれを見つけることができず、次のようにイテレータを使用する必要がありました。
int n = 0;
for (pugi::xml_node ch_node = xMainNode.child("name"); ch_node; ch_node = ch_node.next_sibling("name")) n++;
pugixmlノードオブジェクトにはnumber-of-child-nodesメソッドがありますか?ドキュメントでそれを見つけることができず、次のようにイテレータを使用する必要がありました。
int n = 0;
for (pugi::xml_node ch_node = xMainNode.child("name"); ch_node; ch_node = ch_node.next_sibling("name")) n++;
それを直接計算する組み込み関数はありません。もう1つのアプローチは、次を使用することstd::distance
です。
size_t n = std::distance(xMainNode.children("name").begin(), xMainNode.children("name").end());
もちろん、これは子ノードの数に比例します。std::distance(xMainNode.begin(), xMainNode.end())
すべての子ノードの数 の計算も線形であることに注意してください。子ノード数への一定時間のアクセスはありません。
xpath 検索に基づく式を使用できます (ただし、効率は保証されません)。
xMainNode.select_nodes( "name" ).size()