本文整理汇总了C++中NodePtr::AddWeight方法的典型用法代码示例。如果您正苦于以下问题:C++ NodePtr::AddWeight方法的具体用法?C++ NodePtr::AddWeight怎么用?C++ NodePtr::AddWeight使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NodePtr
的用法示例。
在下文中一共展示了NodePtr::AddWeight方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: MakeSibling
//------------------------------------------------------------------------------
// Make a sibling of CurNode and make CurNode the new node.
void Tree::MakeSibling ()
{
NodePtr q = NewNode ();
NodePtr ancestor = CurNode->GetAnc();
CurNode->SetSibling(q);
q->SetAnc(ancestor);
ancestor->AddWeight(CurNode->GetWeight());
ancestor->IncrementDegree();
CurNode = q;
}
示例2: Read
//.........这里部分代码省略.........
{
errormsg = "Tree description unbalanced, this \")\" has no matching \"(\"";
state = QUIT;
}
else
{
tree->MakeSibling ();
//token = parser.GetNextToken ();
token = GetTaxonName();
state = GETNAME;
}
break;
// The next node will be a child of CurNode, hence
// we create the node and push CurNode onto the
// node stack.
case Tokeniser::LPAR:
stk.push (tree->GetCurNode());
tree->MakeChild();
//token = parser.GetNextToken ();
token = GetTaxonName();
state = GETNAME;
break;
// We've finished ready the descendants of the node
// at the top of the node stack so pop it off.
case Tokeniser::RPAR:
if (stk.empty())
{
errormsg = "Tree description unbalanced (an extra \")\")";
state = QUIT;
}
else
{
NodePtr q = stk.top();
q->AddWeight(tree->GetCurNode()->GetWeight());
tree->SetCurNode (q);
stk.pop ();
token = parser.GetNextToken ();
state = FINISHCHILDREN;
}
break;
// We should have finished the tree
case Tokeniser::SEMICOLON:
if (stk.empty())
{
state = ACCEPTED;
}
else
{
errormsg = "Tree description ended prematurely (stack not empty)";
state = QUIT;
}
break;
default:
errormsg = "Syntax error [NEXTMOVE]: expecting one of \":,();\", got ";
errormsg += parser.GetToken();
errormsg += " instead";
state = QUIT;
break;
}
break;
case FINISHCHILDREN:
switch (token)
{
case Tokeniser::STRING:
case Tokeniser::NUMBER:
示例3: Parse
//.........这里部分代码省略.........
break;
} //BCO
else { //BCO. Will work when not dealing with a simmap tree.
f = atof (p.GetTokenAsCstr());
CurNode->SetEdgeLength (f);
CurNode->SetModelCategory(vector<double>(1,f)); //Added by BCO
CurNode->SetStateOrder(vector<int>(1,0)); //Added by BCO
CurNode->SetStateTimes(vector<double>(1,f)); //Added by BCO
EdgeLengths = true;
//std::cout<<endl<<"536 Current token is "<<p.GetTokenAsCstr()<<endl; //added by BCO
token = p.NextToken ();
} //BCO
break;
case SPACE:
case TAB:
case NEWLINE:
//std::cout<<endl<<"543 Current token is "<<p.GetTokenAsCstr()<<endl; //added by BCO
token = p.NextToken ();
break;
// The next node encountered will be a sibling
// of Curnode and a descendant of the node on
// the top of the node stack.
case COMMA:
q = NewNode();
CurNode->SetSibling (q);
if (stk.empty())
{
Error = errMISSINGLPAR;
state = stQUIT;
}
else
{
q->SetAnc (stk.top());
stk.top()->AddWeight (CurNode->GetWeight());
stk.top()->IncrementDegree ();
CurNode = q;
state = stGETNAME;
//std::cout<<endl<<"564 Current token is "<<p.GetTokenAsCstr()<<endl; //added by BCO
token = p.NextToken ();
}
break;
// The next node will be a child of CurNode, hence
// we create the node and push CurNode onto the
// node stack.
case LPAR:
Internals++;
stk.push (CurNode);
q = NewNode();
CurNode->SetChild (q);
q->SetAnc (CurNode);
CurNode->IncrementDegree ();
CurNode = q;
//std::cout<<endl<<"579 Current token is "<<p.GetTokenAsCstr()<<endl; //added by BCO
token = p.NextToken ();
state = stGETNAME;
break;
// We've finished ready the descendants of the node
// at the top of the node stack so pop it off.
case RPAR:
if (stk.empty ())
{
Error = errUNBALANCED;
state = stQUIT;
}
else
{