【问题标题】:Best container for string search in Qt5Qt5中字符串搜索的最佳容器
【发布时间】:2013-09-22 23:52:41
【问题描述】:

在我的项目中,我需要确定字符串在字符串列表中的出现。列表中不允许重复,顺序无关。

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

【问题讨论】:

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

标签: c++ string qt search containers


【解决方案1】:

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

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

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

这是一个改编自 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");

result 是一个包含“Bill Murray”和“Bill Clinton”的 QStringList

如果您只想知道一个字符串是否在列表中,请使用 contains 函数

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

找到会返回真。

【讨论】:

  • 你有很多字符串吗?我建议先尝试 QStringList,然后如果它太慢,那么看看另一个容器是否更快。使用它的代码很少,因此您应该可以在以后根据需要轻松更改它。
  • 我有大约 5-20k 个字符串
  • 如果一个 QStringList 花费的时间太长,将其拆分为几个 QStringLists 对象,并使用 QThread 在单独的线程上处理它们。只需确保线程数不超过其运行机器上的 CPU 内核数即可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-21
  • 2018-02-04
  • 2016-11-22
  • 1970-01-01
  • 2014-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多