使用无序映射查找功能
如果我希望无序映射查找函数返回 bool 值,我该怎么做?
这是我现在的代码。
bool NS_SymbolTable::SymbolTable::Contains(std::string lexeme)
{
SymbolTable *tempSymbolTable = this;
std::unordered_map<std::string, Identifier*>::iterator it = tempSymbolTable->hashtable.find(lexeme);
return std::boolalpha;
}
我还需要做什么?是否可以返回布尔值?我发现几乎没有关于此的文档。
这是我从 http://msdn.microsoft.com/en 获得示例的地方-us/library/bb982431.aspx
If I want the unordered map find function to return a bool value, how would I go about doing that?
Here's my code right now.
bool NS_SymbolTable::SymbolTable::Contains(std::string lexeme)
{
SymbolTable *tempSymbolTable = this;
std::unordered_map<std::string, Identifier*>::iterator it = tempSymbolTable->hashtable.find(lexeme);
return std::boolalpha;
}
What else do I neeed to do ? Is it possible to return a bool? There is little to no documentation on this that I have found.
This is where I got an example from http://msdn.microsoft.com/en-us/library/bb982431.aspx
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
如果失败,
tempSymbolTable->hashtable.find(lexeme)
将返回tempSymbolTable->hashtable.end()
,因此您可以非常简单地将这个结果转换为 bool :另外,将其分配给临时变量并进行处理是不必要的。您的功能可以简化为:
tempSymbolTable->hashtable.find(lexeme)
will returntempSymbolTable->hashtable.end()
if it fails, so you can convert this result to a bool very simply:Also, assigning this to a temporary variable and working through that is unnecessary. Your function can be reduced to:
有关文档,请参阅 std::unordered_map::find。那里说:
要获取指示元素是否存在的布尔值,请使用
For documentation look std::unordered_map::find. There it says:
To get boolean value indicating whether an element is present, use
您需要根据 tempSymbolTable->hastable.end() 测试 find 的返回值,如果它们相等,则它没有找到您的元素。 find 之所以如此工作,是因为它当前的形式比仅返回 bool 的东西更通用。
You need to test the return value of find against tempSymbolTable->hastable.end(), if they are equal then it did not find your element. The reason find works like this is because in its current form it is more general than something that returns only a bool.
std::unordered_map::find()
与其他标准容器的查找函数一样,在失败时返回end()
。试试这个:
参考:
编辑:改变返回值的意义。
std::unordered_map::find()
, like the rest of the standard containers' find functions, returnsend()
on failure.Try this:
Reference:
EDIT: change sense of return value.