首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象向量搜索未来对象的用途?

对象向量搜索未来对象的用途?
EN

Stack Overflow用户
提问于 2016-09-06 18:33:22
回答 2查看 62关注 0票数 1

我有数据文件,正在被读入矢量。例子:

代码语言:javascript
复制
West Ham 38 12
Leicester City 38 13

在实际文件中,名称后面有更多的双倍。不管怎么说,以前我用过这样的搜索:

代码语言:javascript
复制
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;
    }
}

基本上,我通过一个向量,寻找一个特定的团队名称。如果我找到了团队的名字,我就指派团队到ht。然后,我将使用ht获取所需的数据,即:

代码语言:javascript
复制
ht.getHomeGamesPlayed();
ht.getPoints();
ht.getHomeGoalsScored();

因此,我的问题是:是否有更好的搜索方法?(使用名称地图+双数向量):

代码语言:javascript
复制
map<name, vector<doubles>>;

此外,如何使搜索不敏感?我输入莱斯特而不是莱斯特CIty,莱斯特城还会被选中吗?

UPD:似乎已经搞清楚了,如果您感兴趣的话,下面是代码:

代码语言:javascript
复制
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时,它不起作用)

EN

回答 2

Stack Overflow用户

发布于 2016-09-06 18:41:45

是的,std::map会更适合你的问题。std::unordered_map也会。

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

代码语言:javascript
复制
std::map<std::string, std::pair<std::string, std::vector<double>>> mymap;

如果需要部分匹配,例如在键入Leicester City时查找leicester,那么现在使用的向量方法可能是最好的。如果只需要在名称的第一部分匹配,仍然可以使用std::map并使用map::lower_bound查找搜索的起始位置。

票数 3
EN

Stack Overflow用户

发布于 2016-09-06 19:21:35

这个问题有几个解决办法。我建议的是一个具有多个输入位置的基树。

首先,创建一张地图或集合或任何东西来保存您的对象。然后,创建一个基树,对给定宽度的每个部分匹配进行索引。

abcde fge

创建一个条目"abcde fge","bcde fge","cde fge",."e“指向您的(多个)映射值。您可以使用基树的属性,可以很容易地找到具有给定前缀的所有值,以执行快速搜索,在O(1) (或N大小搜索项中的O(N) )附近查找给定子字符串的所有匹配项,条件是输入大小固定。然而,请注意,在搜索材料大小的O(n^2)中构造树尺度,为了纠正这一点,可以限制索引索引的搜索项的大小(例如,50个字符),或者以递增的方式进行索引,然后进行多次搜索(例如索引"abcdefg“"cdefg”和"efg",然后在搜索"def“和"ef”时,搜索与efg前缀匹配的"ef“结果)。

请注意,搜索字符串必须至少与跳过的宽度相同,否则必须搜索整棵树。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39355669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档