本文整理汇总了C++中BNode::get_size_b方法的典型用法代码示例。如果您正苦于以下问题:C++ BNode::get_size_b方法的具体用法?C++ BNode::get_size_b怎么用?C++ BNode::get_size_b使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BNode
的用法示例。
在下文中一共展示了BNode::get_size_b方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: split
BTree* BTree::split(float ratio){
BTree* right = new BTree( path );
size_t blocks = root->number_blocks();
size_t number = ratio * blocks;
list<BNode*> leaves;
root->all_leaves(leaves);
Block* tmp = NULL;
for(list<BNode*>::iterator it = leaves.begin() ; it != leaves.end() ; it++)
for( size_t i = 0; i<min( (*it)->get_size_b() - d, number) ; i++){
tmp = (*it)->lost_greatest_block();
cache->remove( tmp );
right->add_block( tmp );
number--;
}
while( number > 0){
BNode* last = root->last_leave();
tmp = last->lost_greatest_block();
cache->remove( tmp );
right->add_block( tmp );
number--;
root->last_rebalance();
last = root->last_leave();
int todo = min( last->get_size_b() - d, number);
for( int i = 0; i<todo; i++){
tmp = last->lost_greatest_block();
cache->remove( tmp );
right->add_block( tmp );
number--;
}
}
return right;
}