QVariant 内部如何工作?

发布于 2024-10-16 23:13:56 字数 110 浏览 1 评论 0原文

我想知道,QVariant 如何在内部存储 int、QMap、QList...

我的意思是内部数据结构/实现是什么?在 QVariant 中存储和检索类型(int、float)的开销是多少?

I want to know, How QVariant can internally stores, int, QMap, QList,...

I mean what is the internal data-structure/Implementation? What is the overhead of storing and retrieving types (int, float) in QVariant?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

揽月 2024-10-23 23:13:56

快速浏览一下代码就会发现,QVariant 基本上是几个基本类型(intfloat)的联合等),一个 QObject 指针,以及一个用于非 QObject 和非原语的任何其他内容的 void* 指针。还有一个类型数据成员,允许它知道当前实际存储的内容。开销似乎并不比存储到结构体的成员、检查类型兼容性并可能进行转换(例如 int 到 float)多多少

A quick look at the code reveals that a QVariant is basically a union of several primitive types (int, float etc'), a QObject pointer, and a void* pointer for anything else that is not a QObject and not a primitive. There is also a type data member that allows it to know what's actually currently stored there. The overhead appears to be not much more than storing to a member of a struct, checking that for type compatibility and possibly making a conversion (int to float for instance)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文