在 C++ 哈希 table 代码中返回空迭代器

Returning empty iterator in C++ hash table code

我正在关注一些关于使用单独链接实现散列 table 的手写笔记。特别是我正在寻找这个功能:

list<ListCell>::iterator TablaHash::FoundOnList(int key, int table_row){
    for(list<ListCell>::iterator found= table[table_row].begin(); 
            found != table[table_row].end();found++){
        if((*found).Key() == key){
            return found;
        }
    }
    return Ø;
}

其中最后一个符号是空集。我知道我应该 return 一个 "empty" 迭代器,但我应该怎么做?也许 return end() 迭代器?

是的,返回 end() 迭代器是 C++ 中最自然的事情。

例如,std::find returns end 迭代器如果找不到搜索的项目。

c++中没有空迭代器的概念。你应该 return end() 迭代器。即使是标准的 STL 算法也是如此。