我可以将矢量对象与NULL进行比较吗?

时间:2017-05-10 17:43:38

标签: c++ vector null comparison

我来自Python / Java领域,我正试图修改现在用c ++制作我自己的hashmap。

当我尝试检查以将哈希表中的位置位置与NULL(第6行和第11行)进行比较时,我收到错误:

invalid operands to binary expression ('value_type' (aka 'HashEntry') and 'long')"

我希望有人可以引导我朝着我做错的方向以及如何解决它。

void CustomHash::insert(HashEntry entry) {
    int k = entry.getKey();
    int i = 0;
    int hashVal = hash_One(k);
    int temp = hashVal;
    while (i < size && hashArray[temp] != NULL) {
        i++;
        temp = (hashVal + i*hash_Two(k)) % size;
    }

    if (hashArray[temp] == NULL) {
        hashArray[temp] = entry;
    }
    else {
        cout << "Failure" << endl;
    }
}

编辑1:hashArray声明

CustomHash::CustomHash(int m) {
    this->size = m;
    this->hashArray = vector<HashEntry>();
}

1 个答案:

答案 0 :(得分:0)

鉴于,

  

hashArray是.empty()对象

vector<HashEntry>评估为hashArray[temp]。您无法将HashEntryHashEntry进行比较。

使用其他策略检查NULL是否包含任何密钥等于hasArray的项目。我建议使用std::count_if

temp

根据@cdhowie的建议,更好的解决方案是使用std::any_of

while (i < size && std::count_if(hashArray.begin(), hashArray.end(),
                                 [=temp](HashEntry const& e)
                                 { return (temp == e.getKey());}) > 0 )
{
    i++;
    temp = (hashVal + i*hash_Two(k)) % size;
}