我想實現插入一個單詞到一個鏈式散列表。
問題是我想插入一個有2個文件的對象,我需要訪問一個迭代器。這個問題似乎在迭代器it
中發生,因爲該代碼不適用於for循環。我還在Vocabolo.cpp
中重載了operator==
以使其適用於我的情況。向量列表+迭代器CPP
我也有一個問題的矢量的大小,我可以使用一個定義?看起來不是。有什麼建議嗎?
我宣佈我的名單+迭代器的矢量頭文件爲:
vector<list<Vocabolo>> hash;
list<Vocabolo>::iterator it;
這是類Vocabolo的一部分:
class Vocabolo {
public:
Vocabolo();
~Vocabolo();
void setVocabolo(Vocabolo);
string getVocabolo();
bool operator== (Vocabolo);
string termine;
string tipo;
};
這是重載方法==操作符:
bool Vocabolo::operator== (Vocabolo x) {
return getVocabolo() == x.termine;
}
不工作的方法!
bool HashV::Insert(Vocabolo nuovo) {
key = this->HashUniversale(nuovo.termine);
for (it = this->hash[key].begin(); it != this->hash[key].end(); it++)
if (it->termine == nuovo.termine)
return false;
else {
hash[key].push_back(nuovo);
return true;
}
}
你推新的元素融入到你的'hash',同時在它的迭代。將新元素添加到矢量中可能會導致它將其內存釋放並使先前的迭代器無效。 – aslg
請注意,當您立即返回時,您的循環將最多運行一次。 – Jarod42