我获得了一段代码来帮助我完成任务,但是我在解决方案中实现它时遇到了麻烦。这是一段代码:
#include<iostream>
#include<tr1/unordered_set>
using namespace std;
using std::tr1::unordered_set;
struct ihash
: std::unary_function<int, std::size_t>
{
std::size_t operator()(const int& x) const
{
return x;
}
};
我有一个对象,我想用它来决定我想要使用的哈希值的大小。我想出了这个:
/*int myhash(const Play & key, int tableSize){
int hashval = 0;
string keysize = key.getoTeam()+key.getdTeam();
for(int i=0;i<keysize.length(); i++){
hashval = hashval*5 + keysize[i];
}
return hashval;
}*/
但是我找不到任何代码示例使用结构来执行类似的哈希表,并且int版本不能使用我的unordered_set声明。我声明它是这样的:
unordered_set<Play, myhash> PlaySet;
任何人都可以帮助我连接点吗?
更新
新错误:main.cpp:38:错误:在'thereturnâ之前预期的unqualified-id
我最终得到了:
struct hashbrowns{
size_t operator()(const Play & a) const
{
string keysize = a.getoTeam()+a.getdTeam();
size_t seed = 0;
for(int i=0;i<keysize.length(); i++)
seed = seed*5 + keysize[i];
}
return seed;
};
第38行,返回种子;
答案 0 :(得分:1)
在更新后的代码中,您的返回值必须更高。现在它在operator()
函数之外。