1

我正在做一个任务,我在 C++ 中实现一个字典(ADT)。我最初用 Xcode 编写程序,一切似乎都运行良好。但是我最近发现分级机使用 Visual Studio 2010,所以我试图确保我的代码也能在 VS2010 中运行......

我现在遇到的问题是我remove()的哈希表函数。基本上,我使用列表向量并遍历列表以删除冲突条目。但是现在当我尝试测试此remove()功能时,我收到以下错误:debug assertion failed! expression list iterators incompatible. 我尝试查看有关断言的 Visual C++ 文档,一切看起来都应该可以工作......有什么我忽略的吗?

这是我的代码:

///**DELETE***////  
void remove(string key) {
    size_t index = hashString(key);
    list<Entry>& entry = table.at(index);
        for(typename list<Entry>::iterator it = entry.begin();
            it != entry.end();
            /**/)
        {
            if (it->data == key) {
                table[index].erase(it);
            } else
                it++;
        }
    //entry not found
    cout << "Error: Cannot Delete... No Such Entry"<< endl;
}
4

1 回答 1

2

您忽略erase. 如果您将包含erase调用的行更改为 this 是否有效?

it = table[index].erase(it);

或者确实:

it = entry.erase(it);

请参阅此处的文档list::erase

http://www.cplusplus.com/reference/list/list/erase

于 2013-06-13T17:30:00.323 回答