C++ 字符串列表中的部分搜索

C++ 字符串列表中的部分搜索,c++,string,algorithm,search,C++,String,Algorithm,Search,我有一组键,用作应用程序中快速搜索的索引 目前,我只能搜索完整的字符串,最大的灵活性是如果我可以搜索字符串中任何地方出现的部分字符串。当然,最简单的方法是迭代列表中的所有字符串并查找子字符串。这会起作用,但当列表开始增长时,速度可能太慢 我读了一些关于基数树的内容,但这只允许我从字符串的开头进行部分匹配,也可能从字符串的结尾进行部分匹配 我的问题是,我应该看什么算法来解决部分匹配问题,不是在一个大文档中,而是在一个字符串列表中。如果我保存字符串的排序列表,这个问题会更容易吗?我可以看出,如果字符

我有一组键,用作应用程序中快速搜索的索引

目前,我只能搜索完整的字符串,最大的灵活性是如果我可以搜索字符串中任何地方出现的部分字符串。当然,最简单的方法是迭代列表中的所有字符串并查找子字符串。这会起作用,但当列表开始增长时,速度可能太慢

我读了一些关于基数树的内容,但这只允许我从字符串的开头进行部分匹配,也可能从字符串的结尾进行部分匹配


我的问题是,我应该看什么算法来解决部分匹配问题,不是在一个大文档中,而是在一个字符串列表中。如果我保存字符串的排序列表,这个问题会更容易吗?我可以看出,如果字符串长度相同,这将更容易,但对于可变长度字符串,我无法找到合理的方法。

如果保留一个包含所有字符串的大字符串,但使用特定的分隔符,会怎么样?找到部分的索引,从索引或到索引的子字符串,然后在分隔符上拆分。现在您有了字符串的索引。当您希望快速执行部分字符串匹配时,使用肥皂泡、冲洗、重复字符串的其余部分或使用正则表达式查找所有匹配项。

后缀树和后缀数组非常有用。

在搜索之前对字符串进行排序。