ページ 11

C++ 分離チェイン法

Posted: 2018年5月20日(日) 12:39
by パズドラ
下記のようにしてコンパイルは通ったのですが、同じ値を入れても成功がcoutされます。ハッシュ関数道理の連結リストに値がちゃんと入っているのか知りたいです。
メンバは以下の3つです。 list<int>* table; int table_size; int ndata;
ハッシュ関数はkey % table_sizeです。

コード:

bool HashSeparate::Insert( int key ){
  list<int> l = table[key % table_size];
    	list<int>::iterator itr = find(l.begin(), l.end(), key);
	if(itr != l.end()){
	  cout << "失敗" << endl;
 return false;
	}
  else{
    l.push_front(key);
    ndata++;
    cout << "成功" << endl;
    return true;
  }

Re: C++ 分離チェイン法

Posted: 2018年5月20日(日) 14:35
by みけCAT
lに値を追加しても、コピー元のtableの要素には反映されません。
型名に&を追加して参照を使うといいかもしれません。