我写了一个模板化的List类。它具有标准的List函数(pop_front,push_back等)。
我还有一个我想写的词典类,但遇到了一个问题,这阻止我使用我的哈希函数。
要解决可能与哈希冲突的问题,我决定我的词典类应该包含一个动态的列表数组。
我想要做的是使用哈希函数索引我的Dictionary类中的列表数组,并从那里插入/获取我需要的信息。
OR 如果发生碰撞我可以链接字典。
以下是我的代码片段。我希望有人可以看看这个并告诉我为什么当我尝试索引我的词典中的列表数组时它会给我带来错误。
(K代表我将要散列的密钥,T代表类型)
template < class K, class T >
class Dictionary
{
public:
void Init( int size );
void Insert( K key, T value );
int (*Hash)( K key );
private:
List< T >* data;
}
这是问题的开始......(我认为):
template< class K, class T >
void Dictionary< K, T >::Init( int size )
{
data = new List< T >[ size ];
}
template < class K, class T >
void Dictionary< K, T >::Insert( K key, T value )
{
int h = Hash( key );
//data[ h ].PushBack( value ); //PROBLEM
//data[ h ]->PushBack( value ); //PROBLEM
}
我已经评论了2行并写了“PROMBLEM”是我感到困惑的地方......呃。
要明确:我只想推送一次,而不是两次。我只是简单地展示了两种语法都不会起作用。
所以:我想知道如何浏览我的一系列清单(这些清单只有一个用来模板化 “T类”,并插入我选择的任何索引。
这是我的第一篇文章,非常感谢任何帮助。
修改*
看起来我的代码工作得很好。只是视觉工作室中的intellisense没有选择改变。 (但仍然不是。)
但看起来一切正常。