2013-09-22 23 views
0

在我的项目中,我需要确定字符串列表中出现的字符串。列表中的副本不被允许,并且顺序不相关。Qt5中用于字符串搜索的最佳容器

请帮我选择最适合字符串搜索的Qt容器。

+5

如果不能重复,那么我会说QSet是你想要的。 – jodag

回答

2

如果你想要一个字符串列表,Qt提供了QStringList类。

一旦添加了所有的字符串,就可以调用removeDuplicates函数来满足您不重复的要求。

要搜索字符串,请调用过滤器函数,该函数返回包含该字符串的字符串列表或传递给该函数的正则表达式。

下面是一个例子,改编自Qt文档: -

// create the list and add strings 
QStringList list; 
list << "Bill Murray" << "John Doe" << "Bill Clinton"; 

// Oops...added the same name 
list << "John Doe"; 

// remove any duplicates 
list.removeDuplicates(); 

// search for any strings containing "Bill" 
QStringList result; 
result = list.filter("Bill"); 

结果是含有“比尔·默里”和“比尔·克林顿”

如果你只是想知道一个字符串是否是一个QStringList中在列表中,使用包含功能

bool bFound = list.contains("Bill Murray"); 

找到将返回true。

+0

怎么样perfomance? QList更快QSet? – Dcow

+0

你有很多字符串吗?我建议首先尝试QStringList,然后如果它太慢,那么看看另一个容器是否更快。使用它的代码非常少,因此如果需要,您应该可以在以后轻松地更改它。 – TheDarkKnight

+0

我有大约5-20k的字符串 – Dcow