我有一个带有顶点列表的哈希表(unsorted_map)。我想知道散列表中是否存在顶点,但表本身是私有的,唯一的getter方法是pointsTo()
函数,它返回该顶点指向的顶点。
我想检查是否没有指向特定顶点的边。
if(vertices[to]->pointsTo(from) != nullptr)
{
}
产生错误"No operator != matches these operands. Operand types are Edge!=std::nullptr_t"
取消引用*(vertices [to] - > pointsTo(from))表示"没有运算符*匹配这些操作数"
答案 0 :(得分:2)
在C ++哈希表和地图中,没有布尔值"检查是否存在"。如果你这样做
m[x]
如果x
不存在,则会创建与该密钥关联的新的默认初始化元素。
然而,这通常不是你想要的,首先检查C ++方式是
if (m.find(x) != m.end()) {
... element x is present ...
}
标准地图的另一个烦恼是,假设[]
是一个可以改变对象的操作,你不能将它与const引用一起使用,或者当地图值没有默认构造函数时。因此,即使在出于其他原因确定密钥始终存在的情况下,m[x]
仍然是禁止操作,您需要使用m.at(x)
。