0001 template <typename T> BTNodePosi<T> BTree<T>::search( const T& e ) { //在B-树中查找关键码e 0002 _hot = NULL; 0003 for ( BTNodePosi<T> v = _root; v; ) { //从根节点出发,逐层查找 0004 Rank r = v->key.search( e ); //在当前节点中,找到不大于e的最大关键码 0005 if ( ( -1 != r ) && ( e == v->key[r] ) ) return v; //成功;否则... 0006 _hot = v; v = v->child[r + 1]; //转入对应的孩子节点(I/O) 0007 } //这里在向量key内是二分查找,但对通常的_m,改为顺序查找效率反而更高 0008 return NULL; //失败:最终抵达外部节点 0009 }