C++ 如何在另一个模板化数据结构中使用模板化数据结构?
我已经编写了一个模板化列表类。它具有标准的列表功能(前弹出、后推等) 我还想写一个Dictionary类,但是遇到了一个问题,阻止了我使用哈希函数 为了解决可能与哈希冲突的问题,我决定Dictionary类应该包含一个动态列表数组。C++ 如何在另一个模板化数据结构中使用模板化数据结构?,c++,list,templates,dictionary,dynamic-arrays,C++,List,Templates,Dictionary,Dynamic Arrays,我已经编写了一个模板化列表类。它具有标准的列表功能(前弹出、后推等) 我还想写一个Dictionary类,但是遇到了一个问题,阻止了我使用哈希函数 为了解决可能与哈希冲突的问题,我决定Dictionary类应该包含一个动态列表数组。 我想做的是使用哈希函数为Dictionary类中的列表数组编制索引,并从中插入/获取所需信息。 或如果发生冲突,我可以链接字典 下面是我的代码片段。我希望有人能看到这一点,并告诉我为什么当我试图在字典中索引我的列表数组时,它会给我错误 (K表示我将散列的键,T表示
我想做的是使用哈希函数为Dictionary类中的列表数组编制索引,并从中插入/获取所需信息。
或如果发生冲突,我可以链接字典 下面是我的代码片段。我希望有人能看到这一点,并告诉我为什么当我试图在字典中索引我的列表数组时,它会给我错误 (K表示我将散列的键,T表示类型)
模板
类词典
{
公众:
void Init(整数大小);
无效插入(K键,T值);
int(*散列)(K键);
私人:
列出*数据;
}
问题就从这里开始。。。(我认为):
模板
void Dictionary::Init(int-size)
{
数据=新列表[大小];
}
模板
无效字典::插入(K键,T值)
{
int h=散列(键);
//数据[h]。回推(值);//问题
//数据[h]->回推(值);//问题
}
----------
在我注释掉这两行并写下“PROMBLEM”的地方,我感到困惑。。。嗯
要明确的是:我只想后退一次,而不是两次。我只是想说明这两种语法都不起作用
所以:我想知道如何浏览我的列表数组(这些列表仅由一个“T类”),并在我选择的任何索引处插入
这是我的第一篇文章,希望能得到任何帮助 ---------- 编辑*
看来我的代码运行得很好。只是VisualStudio中的intellisense没有接收到更改。(现在仍然不是。)
但看起来一切都正常
无效字典中缺少
:
s是打字错误吗?应将数据定义为类似矢量>*数据的内容。另外,请注意,您必须比较bucket中的键值对,否则,如果多次插入相同的键值对,那么bucket中可能会有多个相同的键值对副本。是否可以发布一个?你遇到了什么问题?你的代码没有编译?张贴您收到的特定错误消息。
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
}