使用双向链表实现地图

时间:2014-09-13 05:51:49

标签: c++

我正在尝试使用模板双向链表来实现地图。

我正在尝试编写一个get函数:

valueType get (keyType key, bool & success) const;
  • 返回与给定键关联的值。

  • 如果密钥存在于地图中,则成功应设置为true。

  • 如果密钥没有关联,则应将成功设置为false。

get函数将用于用户访问地图,以及add()remove()函数,用于检查给定键和值之间是否存在关联。

如果价值不存在,我对我的回报感到困惑?因为,此函数返回类型valueType

2 个答案:

答案 0 :(得分:2)

我会像这样反过来(部分伪代码):

bool get(const keyType& key, valueType& value) const
{
    // search for value
    if(/*value found*/)
    {
        value = /*found value*/; // set parameter to found value
        return true;
    }
    return false; // leave value unchanged
}

使用这样的功能:

valueType value;

if(get("key", value))
{
    // we know key was found and value was set
}
else
{
    // we know key was not found and value is unchanged
}

答案 1 :(得分:0)

您可以参考STL map operator[ ] 与您的get功能相似,如果密钥没有,您可以通过将密钥插入地图来实现您的功能现在存在,键的值是默认值(例如0表示int,“”表示字符串)。

编辑:抱歉我的错误,我认为您的get功能与find类似,而不是operator[]。您可以在地图中返回键的位置,如果该键不存在,则只返回无效位置。

如果因为我的英语而表达不清楚,请回复我。