qmap等查找部分key的问题

trumolong 2015-08-16 03:02:03
我现在在做一个类似拼音码表,键值大概是这样的:

a 啊 阿 呵 吖 嗄 腌 锕 錒
aba 阿爸
achang 阿昌
aes 厑
aidao 哀悼
aie 挨饿
aifu 爱抚

现在我是用QMap保存上面数据,但使用find()一个拼音如"ai"时,因为没有"ai"这样key,所有找不出数据,我想实现find部分匹配的功能,输入"ai",可以找出像上面的"aidao","aie","aifu"。


不知道应该如何实现?
...全文
901 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyq5945 2015-08-16
  • 打赏
  • 举报
回复 1
QMap::keys() 返回map的所有key的QList<QString>,自己再针对这个QList<QString>遍历后用QString的Contains或者IndexOf计算下。
容器类是隐式共享(implicitly)的,可重入(reentrant)的和线程安全的。并且在速度上进行了优化,内存占用少,内联代码扩展少,从而可以产生更小的可执行文件。 为容器遍历提供了两种迭代器(Java-style,STL-style),并且QT提供了foreach关键字,更加方便元素遍历。其中,Java风格的迭代器更容易使用,特别是对于Java工作人员来说,它提供了高层次的函数;然而,STL风格的迭代器会更高效,并且可以和Qt和STL的通用算法结合使用。 Qt中的容器和STL中的类似,也分为序列式容器和关联式容器。 序列式容器有:QList,QLinkedList,QVector,QStack,QQueue。对大部分应用程序来说,QList都是一个很好的选择。尽管它在底层被实现为一个array-list,但它为我们提供了非常快速的添加操作,包括在头部添加和在尾部添加。如果你确实需要一个linked-list,可以使用QLinkedList;如果你想确保你的元素占用连续的内存空间,可以使用QVector。而QStack和QQueue是两个提供了LIFO和FIFO语义的方便类。 除了序列式容器,Qt中还提供了关联式容器:QMap,QMultiMap,QHash,QMultiHash,QSet。这些容器中存储的都是key-value对。其中,"Multi"容器又支持一个key可以关联多个value。"Hash"容器通过使用一个hash函数而不是二分搜索提供了更快速的查找操作。

16,213

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧