小编Chr*_*ris的帖子

Qt树模型与用于存储翻译字典的嵌套地图

我正在使用Qt编写一个类,需要导入一个字典,用于查找命令并构建命令句.命令以分层方式排列,并具有相应的十六进制键和值定义.为了便于说明,它可能如下所示:

01 : Volume
        | - 01 : Step : 00=Down, 01=Up
        | - 02 : Set : ceil(255/100 * x)
02 : Power
        | - 01 : Power : 00=Off, 01=On
        | - 02 : Sleep : ...etc

我想加载这个词典,然后能够搜索"Volume/Set/50"并返回命令句"01 02 80"或查找"01 02 80"并返回"Volume/Set/50".

实际的实现稍微复杂一些,并且在树结构中具有不同级别的命令,并且可以包括来自单个句子中的不同级别的任何数量和命令组合.

编辑:

下面由volodymyr提供的评论介绍了一个我不熟悉的概念(Trie).它可能是这个特定场景的最佳实现,但我还需要进一步研究它.我仍然对我原来的问题的答案感兴趣(增加了Trie):

使用这些方法中的每一种方法有哪些优点和缺点?

  • Qt树模型
  • 嵌套地图
  • 特里

原始问题:(对于上下文)

Qt树模型,嵌套地图或其他方法更适合存储字典吗?我意识到"更好"可能是主观的,但我想知道权衡.

我已经在构建Qt树模型以在QTreeView中显示一些其他数据,因此代码已经存在并且可以轻松使用.树模型是否允许更加灵活地加载具有不同结构的字典?有一个更好的方法吗?或者可能是标准的设计模式?

c++ qt

8
推荐指数
1
解决办法
1189
查看次数

创建具有多个类的库的推荐方法是什么?

我是C++的新手(之前的Python经验,涉及Java),我正在编写一个小程序作为熟悉项目.作为程序的一部分,我正在编写一个类来解码一些数据,并最终编写一个类似的将执行编码的类.代码是我确定我会经常重用的东西,并认为创建一个库作为项目的一部分会很有趣.我的问题是,什么被认为是创建图书馆的最佳做法?

编辑:(修订)

在提出这个问题之后,我意识到我不知道我不知道的是什么.我做了一些更多的研究,这应该有助于使我的问题更具体:

  • 我在Qt Creator中开发.因此,与Qt相关的细节会有所帮助,但不是必需的.
  • 我在Qt(MyCodec)中创建了一个新的静态库项目,目前,它有一个名为MyDecoder的类.
  • 作为一个库,我的假设是,要添加MyEncoder,我只需创建另一个类/头文件.
  • 接下来发生的事情是我不确定的地方.我只是建立图书馆吗?我的理解是它将创建(在Windows中).lib和.h文件.在这一步之前我应该​​做些什么吗?是否存在会影响我与之互动方式的选项?
  • 我只是在我的程序中包含该头文件来访问我写的两个类吗?
  • 我在Qt中为项目添加.lib文件时找到了很多答案,所以我不需要这些信息.

原始问题:(上下文)

我最初的想法是创建包含MyEncoder和MyDecoder类的MyLib是最方便的.

  • 如果我这样做,我只是在标题中声明这两个类吗?

  • 我想从这个库中创建一个DLL,以实现可移植性和体验.我确信有很多关于创建和使用DLL的信息(这不是这个问题的主题),但是如果有一个特别好的教程(对于Qt)请传递它.

  • 我的假设是,最好为MyEncoder和MyDecoder使用单独的命名空间来实现此实现,而不是MyLib的一个命名空间?

我可以看到这种方法的一个折衷是应用程序的大小,因为包括MyLib.h将包括编码器和解码器的代码(如果编码器和解码器是单独的应用程序).这是假设我没有使用DLL.

我想我得到的是:

  • 有哪些方法(推荐)?
  • 各自的权衡是什么?
  • 我在哪里可以找到关于这个特定主题的文档(教程/示例)?我的搜索努力没有取得多大成果.

如果它更具体,我在Qt Creator中使用Qt 4.7.4进行开发.

c++ qt

3
推荐指数
2
解决办法
4296
查看次数

标签 统计

c++ ×2

qt ×2