示例#1
0
void Hash<V>::insert(string key, V v) {
 if(table[hash(key)].empty()) //empty spot
  table[hash(key)].push_back(Entry<V>(key,v));
 else{ //non-empty spot
  typename list< Entry<V> >::iterator it;
  bool inserted = false;
  for(it = table[hash(key)].begin(); it != table[hash(key)].end() && inserted == false; it++) {
    if(it->getKey() == key) {
    it->setValue(v);
    inserted = true;
   }
  }
  if(inserted == false) { //non-empty and non-duplicate.
   table[hash(key)].push_back(Entry<V>(key,v));
  }
 }
}
示例#2
0
void HashTable<V>::insert(string k, V v) {

  int hash = hashFunction(k);
  list<Entry<V> > &hList = vecTable[hash];
  typename list<Entry<V> >::iterator it;

  for (it=hList.begin(); it!=hList.end(); it++) {
    if (it->getKey() == k) {
      it->setValue(v);
      return;
    }
  }

  // if no key == k in the hash table create a new Entry
  Entry<V> newEntry(k,v);
  hList.push_back(newEntry); 
  return;

}