template
HashTable&HashTable::Insert(const E&e)
{
//散列表插入
K k=e; //抽取key值
int b=hSearch(k);
//检查是否能完成插入
if(empty[b])
{
empty[b]=false;
ht[b]=e;
return *this;
}
散列表中的插入操作,要往Insert()中传的e是string类型的,然后下面的K k=e中的K是int,想要把“=”重载,使得得到的k值等于根据f(e)得到的一个int值。
f(e)=string的第一个字符序号*100+string的最后一个字符序号
这个“=”重载应该怎么写?
我理解你的题意是:k是一个int类型,希望重载一个int类型中已有的“=”操作符,使得该操作符可以等价于:f(e)=序列号+序列号。
假如我的理解无误的话,很抱歉这是无法成功的,因为你不能破坏了基本操作类型中的规则。如果你希望完成你的操作,那么K就不能是一个int类型,而是一个自定义的类型
即:一个类,然后这个类重载了operator=。(你这里的K应该使用#define int K 这种方式定义的吧)。