【发布时间】:2014-05-02 05:52:50
【问题描述】:
我有一个 avl 树,其中包含包含字符串标识符的对象。
我让用户输入一个字符串,然后我想解析树以查看该用户字符串是否与树标识符中的任何对象匹配。如果没有具有与用户字符串匹配的标识符的对象,我想创建一个将标识符设置为用户字符串的对象。如果带有标识符的对象与用户的输入匹配,我想将该对象返回给用户。目前我有两个函数,一个返回布尔值,如果对象已经存在于树中,另一个返回对象到控制台,如果它已经存在于树中。有没有办法将这两个步骤组合成一个功能?我正在寻找类似的东西:
if(...) // the item exists in the tree
{
//return the object
}
else
{
avltreeObject.insert(user_string);
}
【问题讨论】:
-
为什么不在
else的情况下返回新插入的对象呢?如果您还需要返回一个状态(找到或插入),要么有一个布尔返回值并使用传递的对象引用参数并设置它,或者你可以返回一个std::pair,状态为first,对象为@ 987654328@. -
如果对象不存在,通常检索函数返回null,所以你可以调用它并根据它来区分进一步的处理。
-
你可能会遵循 std::map 实现
-
为什么我觉得这个问题是相关的? stackoverflow.com/questions/23417592/…
-
在这种情况下,我也会返回新插入的值。在我需要值类的“空”值的情况下,我通常使用 Boost.Optional:boost.org/doc/libs/1_55_0/libs/optional/doc/html/index.html