gpt4 book ai didi

c++ - 对象的 vector 搜索 future 对象的用途?

转载 作者:行者123 更新时间:2023-11-30 01:42:38 25 4
gpt4 key购买 nike

我有一个数据文件正在被读入一个 vector 。示例:

West Ham 38 12
Leicester City 38 13

在实际文件中,名称后面有更多的 double 。无论如何,以前我使用过这种搜索:

vector<Team>newTeams; //vector of Team objects

string homeName;
cout << "Enter home team name: ";
cin >> homeName;
cout << endl;

Team ht;

for(Team team : newTeams)
{
if(team.getName() == homeTeam)
{
ht = team;
}
}

基本上我会通过一个 vector 来寻找一个特定的团队名称。如果我找到团队名称,我将团队分配给 ht。然后,我会使用 ht 来获取所需的数据,即:

ht.getHomeGamesPlayed();
ht.getPoints();
ht.getHomeGoalsScored();

那么,我的问题是:是否有更好的搜索方式?(使用名称映射 + double vector ?):

map<name, vector<doubles>>;

此外,如何使搜索不区分大小写?即我输入 leicester 而不是 Leicester CIty,Leicester City 仍然会被选中吗?

更新:好像我想通了,如果您有兴趣,这是代码:

string homeName;
cout << "Name: " << endl;
cin >> homeName;

Team ht;

for (Team team : dataTable) {
if (strstr(team.getName().c_str(), homeName.c_str()))
{
ht = team;
}
}

所以当我输入 Leic 时,它会选择 Leicester City(当我输入 leic 时,它不起作用)

最佳答案

是的,std::map 更适合您的问题。 std::unordered_map 也是如此。

要获得不区分大小写的匹配,您可以使用已转换为全部大写或全部小写的字符串作为映射键。然后单独存储原来的名字。

std::map<std::string, std::pair<std::string, std::vector<double>>> mymap;

如果您需要部分匹配,例如在键入 leicester 时找到 Leicester City,您现在使用的 vector 方法可能是最好的。如果您只需要匹配名称的 first 部分,您仍然可以使用 std::map 并使用 map::lower_bound 来找到搜索的起点。

关于c++ - 对象的 vector 搜索 future 对象的用途?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39355669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com