【发布时间】:2013-04-24 18:19:53
【问题描述】:
我需要搜索一个由指向名为 Person 的结构的指针的链接列表组成的数据库。在 Person 内部有一堆数据——名字、姓氏、社会保障等。这都是虚构的和无关紧要的。我的问题是我需要根据用户输入进行搜索,这决定了结构的哪个部分正在与搜索进行比较。由于所有数据都存储为 struct Person 的成员,我认为最好的方法(如不编写 8 个搜索函数)是通过映射,但我对映射的掌握非常差,几乎不存在.以下是相关代码:
List * find(List * database, //mapping stuff, string name)
{
//run search
return database;
}
void search(List * database)
{
string field, searchtype, userinput;
cout << "To search for a person, enter information in this format: 'field equal
value' or 'field begins value'. Type 'clear' to
return to original database. Type 'exit' to leave the program\n";
while(field != "exit")
{
cin >> field >> searchtype >> userinput;
if(userinput == "firstname") //this is just for example, I would have to write one of these out for each parameter.
{
List * smallerdb = find(database, map(//mapping stuff?), string userinput);
}
}
}
这是给学校的,所以请不要建议我只使用另一个图书馆,因为我不能。谢谢!
【问题讨论】:
-
你不需要映射。您需要一个参数化的 comparator ,它被初始化为要比较的字段的“状态”。然后在比较您的项目时使用该比较器(可能是函子)。
-
也许您想将一个指向成员的指针传递给您的搜索函数,并使用它来获取要从列表中的每个项目中搜索的数据。
-
我想我把函子误认为是映射,但我对函子仍然很模糊。你认为你能给我指明正确的方向吗?
标签: c++ list search mapping member