【问题标题】:How to find a value in a 2d hashtable in C++如何在 C++ 中的 2d 哈希表中查找值
【发布时间】:2019-01-03 13:54:41
【问题描述】:

我有这个二维哈希表:

map<char, map<string, string>> hashtable;

我想检查这个值是否存在: hashtable['a']["Sa"] 存在与否。怎么做?

谢谢。

【问题讨论】:

  • 请不要在帖子中包含“感谢”。请参阅此元帖子:Should 'Hi', 'thanks', taglines, and salutations be removed from posts?
  • 首先,你知道如何检查一维map中的值是否存在吗?
  • @user202729 标准中没有指定,但典型的实现使用某种形式的 BST。
  • 顺便说一句,c++map不能是哈希表,因为它必须保持键的有序。
  • @user202729 什么意思?

标签: c++ hashmap iterator hashtable


【解决方案1】:

首先您必须检查hashtable['a'] 是否存在,然后检索地图的第二个元素,然后检查下一个元素。

auto it = hashtable.find('a');
if (it != hashtable.end()) {
    auto it2 = it->second.find("Sa");
    if(it2 != it->second.end()) {
        return true;
    }
    return false;
}
return false;

如果元素不存在,find() 方法会返回一个等于映射结尾的迭代器。

【讨论】:

  • 当我写这段代码时:auto it = hashtable.find('a'); visual c 2008 给了我这个错误:错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int 错误 C2440: 'initializing' : cannot convert from 'std::_Tree<_traits>::iterator' to 'int'
  • @sosscs 那么你没有使用 C++11。
  • 然后只需将 auto 替换为 map>::iterator 在第一个和 map::iterator 在第二个。
猜你喜欢
  • 2015-07-09
  • 2012-07-02
  • 1970-01-01
  • 2011-10-26
  • 2011-11-11
  • 2014-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多