返回False或Value C ++

时间:2014-05-02 05:52:51

标签: c++ avl-tree

我有一个avl树,其中包含包含字符串标识符的对象。

我正在让用户输入一个字符串然后我想解析树以查看该用户字符串是否与树标识符中的任何对象匹配。如果没有对象具有与用户字符串匹配的标识符,我想创建一个将标识符设置为用户字符串的对象。如果具有标识符的对象与用户的输入匹配,我想将对象返回给用户。目前我有两个函数,一个函数返回bool(如果对象已存在于树中),另一个函数将对象返回到控制台(如果树中已存在)。有没有办法将这两个步骤合并为一个功能?我正在寻找类似的东西:

if(...) // the item exists in the tree
{
    //return the object
}
else
{
    avltreeObject.insert(user_string);
}

2 个答案:

答案 0 :(得分:2)

返回类型std::pair<bool, Object>

if(/*the item exists in the tree*/)
{
   return std::make_pair(false, object);
}
else
{
   avltreeObject.insert(user_string);
   return std::make_pair(true, object);
}

答案 1 :(得分:0)

这样的事情:

Object obj = avltreeObject.retrieve(user_string);
if( object != 0 ){
    return obj;
} else {
    avltreeObject.insert(user_string);
    return avltreeObject.retrieve(user_string);
}

insert函数可能会返回新创建的对象,因此可以改进。