pugixml количество дочерних узлов

имеет ли объект узла pugixml метод числа дочерних узлов? Я не могу найти его в документации и должен был использовать итератор следующим образом:

int n = 0;
for (pugi::xml_node ch_node = xMainNode.child("name"); ch_node; ch_node = ch_node.next_sibling("name")) n++;

2 ответов


нет встроенной функции для вычисления этого напрямую; другой подход-использовать 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()