本文整理汇总了C++中SplayTree::findInsertionPoint方法的典型用法代码示例。如果您正苦于以下问题:C++ SplayTree::findInsertionPoint方法的具体用法?C++ SplayTree::findInsertionPoint怎么用?C++ SplayTree::findInsertionPoint使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SplayTree
的用法示例。
在下文中一共展示了SplayTree::findInsertionPoint方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: insertWithGrouping
void insertWithGrouping(SplayTree<string, Array<string> >& aSplayTree,
string aArtist,
string aMusicEntry)
{
static int debug_count = 0;
ostringstream os;
os << "debug" << debug_count++ << ".dot";
string filename = os.str();
// Here aArtist is the key and aMusicEntry contributes toward the value
BSTNode<string, Array<string> >* place = aSplayTree.findInsertionPoint(aArtist);
if (place == nullptr) {
// First node to be inserted
Array<string> musicList;
musicList.add(aMusicEntry);
aSplayTree.setRoot(new BSTNode<string, Array<string> >(aArtist, musicList));
} else if (aArtist == place->key()) {
// Key matched
// aArtist exists -- just group the current aMusicEntry with the existing
// associated musicList
Array<string> musicList = place->value();
// Aggregation
musicList.add(aMusicEntry);
// Replace the value with the updated musicList
place->setValue(musicList);
// Splay this node as it is just augmented
aSplayTree.splay(place);
} else {
// Key not matched
// So, this is going to be the first music entry for aArtist
Array<string> musicList;
musicList.add(aMusicEntry);
BSTNode<string, Array<string> >* newNode =
new BSTNode<string, Array<string> >(aArtist, musicList,
nullptr, nullptr, place);
if (aArtist < place->key()) {
// Node on the left of place
place->setLeft(newNode);
} else {
// Node on the right of place
place->setRight(newNode);
}
// dumpSplayTree(aSplayTree, filename);
aSplayTree.splay(newNode);
}
}