我正在尝试使用模板双向链表来实现地图。
我正在尝试编写一个get函数:
valueType get (keyType key, bool & success) const;
返回与给定键关联的值。
如果密钥存在于地图中,则成功应设置为true。
如果密钥没有关联,则应将成功设置为false。
get函数将用于用户访问地图,以及add()
和remove()
函数,用于检查给定键和值之间是否存在关联。
如果价值不存在,我对我的回报感到困惑?因为,此函数返回类型valueType
答案 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[]
。您可以在地图中返回键的位置,如果该键不存在,则只返回无效位置。
如果因为我的英语而表达不清楚,请回复我。