3

我目前正在 Symbian 平台上开发 Qt 应用程序。应用程序有一个 sqlite 数据库,初始数据是从 txt 文件填充的。

我正在从 json 格式的数据中实现在线更新。所以我想在我的数据库更新类中创建通用函数,它接受QList类/结构并从中更新数据库。QList将填充来自 txt 或 json 的对象。

我已经有了解析,只是考虑在性能方面会更好:

  1. 创建 c++ 结构并传递它们(因为对象只包含简单数据)QList
  2. 创建派生自的自定义类QObject并将它们作为指针传递QList,然后删除所有内容qDeleteAll
  3. 还有什么办法...
4

1 回答 1

2

这取决于您的课程是携带行为还是仅携带状态。

  1. 他们携带行为。

    然后,一个多态类是有序的,是的。是否需要继承QObject是另一个问题。QObject 当您需要它的服务(自省、信号/槽、事件处理)时才继承。否则,不要。

    至于qDeleteAll():我不会去那里。代替裸指针,使用智能指针,例如QSharedPointer. 他们跟踪对其有效负载的引用数量,当引用计数降至零时将其删除。

    在这种情况下,不要使用QList,而是使用更高效的容器,例如QVector.

  2. 他们只携带状态。

    那么,一个“哑巴”struct就足够​​了。在这种情况下,不要QList用作容器,而是更高效的东西,例如QVector(不要忘记善用reserve()方法)。

一般来说,尽量避免QList<T>使用Twheresizeof(T)>sizeof(void*)和 non-buildin/non-Qt-types 的类型,因为QList这些.

于 2011-04-30T19:42:05.230 回答