使用这种数据结构:(一系列双向链表)
list<string> hashTable [HASH_TABLE_SIZE];
我想使用以下方法检查某个链表是否为空:
Hash HashTable;
if(Hash[hf(word)].empty() == true)
{do this}
这些是我得到的编译错误:
$ make -f makefile.txt
g++ -g -D HASH_TABLE_SIZE=10 -c hash.cpp
hash.cpp: In member function `void Hash::processFile(std::string)':
hash.cpp:19: error: expected primary-expression before '[' token
makefile.txt:6: recipe for target `hash.o' failed
make: *** [hash.o] Error 1
答案 0 :(得分:0)
首先你有编译错误。请显示hash.cpp文件的第19行。 第二:
Hash[hf(word)].empty() == true
是一个糟糕的比较,你可以只使用
if ( Hash[hf(word)].empty() )
第三:list是一个动态结构,所以,我认为,最好使用指向列表的数组:
list<string> * hashTable[HASH_TABLE_SIZE]