C++ 哈希表-哈希函数的实现
我有一个项目,我需要实现一个哈希表。我有两门课:粉丝课和门票课。球迷可以有门票,每张门票都与球迷的电子邮件相关联 我的问题是,关键是什么,我应该在哪里实现哈希函数?我的猜测是,这将是在票。h,但我仍然不知道如何将票关联到球迷(所有者)的电子邮件 我不认为需要任何代码,但如果有任何疑问,我会发布一些 致意 类风扇(“Adepto”)C++ 哈希表-哈希函数的实现,c++,algorithm,data-structures,hashtable,C++,Algorithm,Data Structures,Hashtable,我有一个项目,我需要实现一个哈希表。我有两门课:粉丝课和门票课。球迷可以有门票,每张门票都与球迷的电子邮件相关联 我的问题是,关键是什么,我应该在哪里实现哈希函数?我的猜测是,这将是在票。h,但我仍然不知道如何将票关联到球迷(所有者)的电子邮件 我不认为需要任何代码,但如果有任何疑问,我会发布一些 致意 类风扇(“Adepto”) class-Adepto{ int-uid; 无序的电子邮件; 静态int-newID; 字符串名称; 串内基帕; 公众: Adepto(string nome);
class-Adepto{
int-uid;
无序的电子邮件;
静态int-newID;
字符串名称;
串内基帕;
公众:
Adepto(string nome);
//Adepto(string nome, Equipa* e1, vector<Bilhete*> bilhetes);
Adepto();
unsigned int getID() const;
string getNome() const;
void setNome(string n);
string getEquipa() const;
void setEquipa(string nEq);
string getEmail() const;
void setEmail(string novoEmail);
Adepto(字符串名称);
//Adepto(串名称、设备*e1、向量比尔赫特);
Adepto();
无符号int getID()常量;
字符串getNome()常量;
void setNome(字符串n);
字符串getEquipa()常量;
无效setEquipa(字符串nEq);
字符串getEmail()常量;
void setEmail(字符串novoEmail);
机票等级(比尔赫特)
struct hash\u adeptos{
int运算符(){
返回a1.getEmail()().size();}
布尔运算符(){
返回a1.getEmail()==a2.getEmail();}
};
typedef tr1::无序的_集选项卡adeptos;
比尔赫特类{
TabelaAdeptos adeptos;
int-uid;
静态int-newID;
日期:validade;
弦多诺;
布尔·文迪多;
公众:
Bilhete(日期validade、字符串dono、bool vendido);
比尔赫特();
int getID()常量;
void setID(int id);
日期getValidade()常量;
无效设置有效日期(日期);
字符串impimebilehete()常量;
//Adepto*getDono()常量;
//无效塞多诺(阿德托和a1);
bool getEstado()常量;
布尔·塞文迪多(比尔赫特和b1);
};
我的问题是,关键是什么
我想关键是车票。所以你可以通过车票号码获得关于持票人的信息
我应该在哪里实现我的散列函数
我认为这无关紧要。我可能会创建另一对文件:TicketHash.hpp
和TicketHash.cpp
我仍然不知道我将如何将票与粉丝(所有者)电子邮件联系起来
哈希函数必须以票证为参数,返回哈希表中单元格(或指向单元格的指针)的编号以及票证持有者的相应信息
我认为您甚至可以创建这样的函数unsigned int hash(Ticket&Ticket){return Ticket.number;}
,但这样它将只是一个数组而不是哈希表
有关哈希函数的示例,请参阅
我的问题是,关键是什么
我想关键是车票。所以你可以通过车票号码获得关于持票人的信息
我应该在哪里实现我的散列函数
我认为这无关紧要。我可能会创建另一对文件:TicketHash.hpp
和TicketHash.cpp
我仍然不知道我将如何将票与粉丝(所有者)电子邮件联系起来
哈希函数必须以票证为参数,返回哈希表中单元格(或指向单元格的指针)的编号以及票证持有者的相应信息
我认为您甚至可以创建这样的函数unsigned int hash(Ticket&Ticket){return Ticket.number;}
,但这样它将只是一个数组而不是哈希表
有关散列函数的示例,请参见,我将以以下方式实现此功能:
Class Tickets{
String number;
//Other details...
}
Class Fans{
ArrayList<Tickets> list;
String email;
int index; //this is an auto increment field which I'd have used in my implementation, just for the ease of further operations. This actually helps.
//Other details
}
Class Hash{
//KEY
String[] key; //index and email in `Fans` class are unique values
//Value
ArrayList<Tickets>[] value;
//function to assign values
void assign(String id, Ticket ticket){
if(key.contains(id))
value<index of id>.add(Ticket);
else
value<new index>.add(Ticket);
}
//function that returns value
Arraylist<Tickets> value(String id){
return value<index of id>;
}
}
课堂票{
字符串编号;
//其他细节。。。
}
班迷{
数组列表;
字符串电子邮件;
int index;//这是一个自动递增字段,我会在实现中使用它,只是为了便于进一步的操作。这实际上很有帮助。
//其他详情
}
类散列{
//钥匙
String[]key;//Fans类中的索引和电子邮件是唯一的值
//价值观
ArrayList[]值;
//函数来赋值
无效分配(字符串id、票证){
if(key.contains(id))
增值(票);
其他的
增值(票);
}
//返回值的函数
Arraylist值(字符串id){
返回值;
}
}
编辑:
对不起,我没有看到标签C++。我用java语言编写的,就像是语法,但是它是粗略的逻辑,应该是可以理解的。如果有任何混淆,请在下面发表评论。代替ARAYLIST,你可以在CPP中使用<代码>矢量<代码>或<代码>列表>代码>。
Class Tickets{
String number;
//Other details...
}
Class Fans{
ArrayList<Tickets> list;
String email;
int index; //this is an auto increment field which I'd have used in my implementation, just for the ease of further operations. This actually helps.
//Other details
}
Class Hash{
//KEY
String[] key; //index and email in `Fans` class are unique values
//Value
ArrayList<Tickets>[] value;
//function to assign values
void assign(String id, Ticket ticket){
if(key.contains(id))
value<index of id>.add(Ticket);
else
value<new index>.add(Ticket);
}
//function that returns value
Arraylist<Tickets> value(String id){
return value<index of id>;
}
}
课堂票{
字符串编号;
//其他细节。。。
}
班迷{
数组列表;
字符串电子邮件;
int index;//这是一个自动递增字段,我会在实现中使用它,只是为了便于进一步的操作。这实际上很有帮助。
//其他详情
}
类散列{
//钥匙
String[]key;//Fans类中的索引和电子邮件是唯一的值
//价值观
ArrayList[]值;
//函数来赋值
无效分配(字符串id、票证){
if(key.contains(id))
增值(票);
其他的
增值(票);
}
//返回值的函数
Arraylist值(字符串id){
返回值;
}
}
编辑:
对不起,我没有看到标签C++。我用java语言编写的,就像是语法,但是它是粗略的逻辑,应该是可以理解的。如果有任何混淆,请在下面发表评论。代替ARAYLIST,你可以在CPP中使用<代码>矢量<代码>或<代码>列表>代码。< /P>什么是哈希表?你在哈希表中存储什么?考虑到应用程序还应该管理观众,向团队的支持者出售电子机票。当购买一张票时,这与你的电子邮件地址中的购买者有关;其他数据也必须与票券有关,如显示的节目、支持者的姓名和地址。。哈希表应包含与风扇关联的票证信息。哈希表用于什么?存储什么
Class Tickets{
String number;
//Other details...
}
Class Fans{
ArrayList<Tickets> list;
String email;
int index; //this is an auto increment field which I'd have used in my implementation, just for the ease of further operations. This actually helps.
//Other details
}
Class Hash{
//KEY
String[] key; //index and email in `Fans` class are unique values
//Value
ArrayList<Tickets>[] value;
//function to assign values
void assign(String id, Ticket ticket){
if(key.contains(id))
value<index of id>.add(Ticket);
else
value<new index>.add(Ticket);
}
//function that returns value
Arraylist<Tickets> value(String id){
return value<index of id>;
}
}