class HashTable { private: vector<vector<pair<int, int> > >data; //这个函数只是对内的,不对外开放,所以设成private int Hash(int x) { return x%data.size(); } public: //实现unordered_map的find函数 if(m.find(x)!=m.end()相当于if(m.contain(x))) bool contain(int x) { for (auto y : data[Hash(x)]) { if (y.first == x) return true; } return false; } int& operator[](int x) { for (auto& f : data[Hash(x)]) { if (f.first == x) { return f.second; } } data[Hash(x)].push_back(make_pair(x, 0)); return data[Hash(x)].back().second; } //实现unordered_map的erase函数 m.erase(x)相当于m.erase(x)) void erase(int x) { for (int i = 0; i < data[Hash(x)].size(); ++i) { if (data[Hash(x)][i].first == x) data[Hash(x)].erase(data[Hash(x)].begin() + i); } } //构造函数,用于初始化类的数据。除了构造函数,这个类里面的都是成员函数 HashTable() { data.resize(19); } };
除留余数法实现哈希表,开vector法解决冲突
猜你喜欢
转载自blog.csdn.net/scarlett_guan/article/details/78808013
今日推荐
周排行