我有一个包含顶点列表的哈希表 (unsorted_map)。我想知道哈希表中是否存在一个顶点,但是该表本身是私有(private)的,唯一的 getter 方法是 pointsTo()
函数,它返回该顶点指向的顶点。
我想检查是否没有边指向特定的顶点。
if(vertices[to]->pointsTo(from) != nullptr)
{
}
产生错误 “No operator != matches these operands. Operand types are Edge!=std::nullptr_t”
取消引用 *(vertices[to]->pointsTo(from)) 表示“没有运算符 * 匹配这些操作数”
最佳答案
在 C++ 中,哈希表和映射没有 bool 值“检查是否存在”。如果你这样做
m[x]
如果 x
不存在,则会创建一个与该键关联的新的默认初始化元素。
但通常这不是您想要的,首先检查 C++ 方式是否是
if (m.find(x) != m.end()) {
... element x is present ...
}
标准映射的另一个烦恼是,鉴于 []
是一个可以改变对象的操作,您不能将它与 const 引用一起使用,或者当映射值没有默认构造函数时。因此,即使在您出于其他原因确定 key 将始终存在的情况下,m[x]
仍然是禁止的操作,您需要使用 m.at(x)
代替。
关于c++ - 如何检查类 obj 是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27074855/