2010-08-23 4 views
1

Si je construis, mon propre arbre binaire, alors je peux trouver la profondeur de chaque nœud. L'exemple de code est le suivantComment trouver la profondeur de chaque nœud dans std :: map?

template<class datatype> 
void binary_node<datatype>::printNodeWithDepth(int currentNodeDepth) 
{ 
    if (left) 
     left->printNodeWithDepth(currentNodeDepth+1); 
    std::cout << value << " and the depth is " << currentNodeDepth << std::endl; 
    if (right) 
     right->printNodeWithDepth(currentNodeDepth+1); 
} 

Mais se demander, puisque la carte est un b-arbre, est-il possible d'écrire quelque chose de semblable à cela pour un std :: carte?

+1

Ne confondez pas un arbre binaire avec un arbre B. http://en.wikipedia.org/wiki/B-tree –

Répondre

7

std::map n'est pas garanti d'être un b-arbre, il est juste garanti pour avoir au moins aussi bonne complexité d'exécution. Pour ouvrir la porte à d'autres implémentations potentielles, l'interface n'inclut pas de fonctions permettant d'inspecter ce type de détails d'implémentation. :)

+0

Merci. Vous vous demandez, comme la façon dont les gens jail breakiPhone, si certains d'entre vous ont fait quelques ajustements à std :: map? – user373215

+0

@nsivakr: Vous pourriez vouloir inspecter un 'std :: map' à l'exécution en utilisant un débogueur (visuel). –

+2

@nsivakr: Vous ne demandez pas comment une implémentation STL particulière peut être cassée, mais plutôt en général comment toutes les implémentations peuvent être cassées. La comparaison ne casserait pas l'iPhone, mais plutôt tous les mobiles de tous les fabricants. La STL est implémentée dans les en-têtes ... si vous voulez vraiment y parvenir, lisez simplement comment votre implémentation particulière est faite. –

Questions connexes