Это функция вставки () реализации HashTable с цепочкой.Чтобы избежать дублирования в списке связанных элементов, я проверял, существует ли уже значение.Если это так, то я просто заменяю существующее значение, поскольку это можно увидеть почти в конце, где он комментирует «обновить значение».Эта строка выдает исключение, говорящее мне, что итератор не разыменовывается.Почему я не могу разыменовать итератор, возвращаемый std :: find ()?Есть ли другой способ обновить найденное значение?
virtual void insert(const K& k, const V& v) {
auto index = hashFctn(k, m_table.capacity());
if (needsToGrow() || m_table[index].m_list.size() >= m_load_factor) {
rehash();
insert(k, v);
}
else {
auto it = std::find(m_table[index].m_list.begin(),
m_table[index].m_list.end(), v);
if (it != m_table[index].m_list.end()) { // if found add it
m_table[index].m_flag = flag::IN_USE;
m_table[index].m_key = k;
m_table[index].m_list.push_back(v);
m_nbrOfElements++;
} else {
*it = v; // update value if exists
}
}
}