c++ - 在包含多个字符串的多个对象中查找子字符串

标签 c++ string qt data-structures

我正在处理一个对象集合,其合理大小可能在 1 到 50K 之间(但没有设定上限)。每个对象都包含一些字符串。

我想实现一个搜索函数,它可以部分、完全或正则表达式匹配这些字符串中的任何一个,然后返回一个对象列表。

如果每个对象只包含一个字符串,那么我可以简单地按字典顺序对它们进行排序,并相当容易地提取范围 - 但我不愿意为每个包含的字符串实现类似 map 的结构由于速度/内存问题。

是否有一种数据结构非常适合这种操作,以提高速度和内存效率?我感觉到一个数据库可能即将出现,但我对它们知之甚少,所以我想推迟研究,直到更有知识的人可以将我推向正确的方向!

最佳答案

类似 map 的集合可能是您最好的选择,键是字符串,值是对包含对象的引用。如果您的字符串作为 STL 字符串保存在对象内部,那么您可以将对数据的引用存储在映射的关键部分中(或者对字符串使用共享指针并在对象和映射中引用它们)

搜索、排序只是实现 custom search functor 的问题使用取消引用的数据。 map 的大小将是 2 个引用加上 map 开销,如果您认为替代方案将同样大(如果不是更大的话),那么这也不会那么糟糕。

关于c++ - 在包含多个字符串的多个对象中查找子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11902283/

相关文章:

c++ - QlineEdit 上的 Qt KeyPress 事件

c++ - 单击按钮后动画 QML 矩形的颜色

cryptography - CryptoAPI 封装的 key

c++ - 使 visual studio 编译,以便最终用户不需要 c++ 运行时库

c++ - 将 unicode 字符串转换为字符串

c++ - Vimba C++ 和 Qt

c++ - Qt 在第一个窗口关闭时打开另一个窗口

c++ - 如何配置系统日志以便应用程序日志转到特定文件

c - 从文件读取仅获取第一个字符

c++ - 查找函数名称并计算其 LOC