【发布时间】:2020-05-21 13:10:47
【问题描述】:
我正在完成一项大学作业,因此我的问题很迂腐。
任务是实现一个大小为 26 的哈希表。哈希函数只是单词 {hash(apple) = e, hash(car) = r} 的最后一个字母。我选择使用map<char, string> 字符来表示字母表中的每个字母(散列)和字符串来存储输入的单词(键)。
我想搜索地图并返回一个指向需要添加新键的位置的指针。我正在使用的搜索方面是我遇到问题的指针。任何帮助将不胜感激。
map<char,string>* search(map<char,string>* hashTable, string key, char hashVal){
map<char,string>::iterator it;
for(it = hashTable->begin(); it != hashTable->end(); ++it){
if(I want to return this address of hashTable){
return &it->hashTable || something to that effect
}
}
)
我想这样做的原因是在 add() 或 remove() 中实现以下用例。
void remove||add(map<char,string>* hashTable, string key){
map<char, string>* temp = search(hashTable, key, hashVal);
temp->second == NULL||key;
}
注意: 我知道地图库具有 at() 和 find() 之类的功能,但是使用它们并不能证明我对哈希表的理解。这是我所指的 2020 年大学数据结构作业的迂腐性质。
ps。如果您认为有更好的库可以作为我的哈希表的基础,请告诉我。可能是链表?
【问题讨论】:
-
为什么不返回迭代器?另外,您是否需要多映射或映射到字符串集合
-
另外,如果你事先知道大小,那么你最好只使用 std::vector 甚至 std::array 来减少间接性
-
我会考虑使用矢量,我对它们更熟悉。最初我试图返回迭代器,但似乎不起作用并且感觉很尴尬,
标签: c++ c++11 pointers data-structures