Qt容器 - 我应该选择哪个

Qt containers - which should I choose?

本文关键字:选择 我应该 容器 Qt      更新时间:2023-10-16

Qt提供了一组类似STL的容器。

但是,没有可用的容器,它按顺序存储有序值(如std::set),并且由于某些原因QSet的行为类似于std::unordered_set。我意识到在称为"set"数据结构O(1)查找可能是一件好事,但我当然无法理解为什么做出这个决定。

应该使用哪个容器来存储有序的项目集合(我怀疑具有虚构值的QMap是一个非常糟糕的选择),为什么Qt不提供类似 std::set 的东西?

我想这背后可能有一些技术原因,但不幸的是,我想不出一个。

来自维基百科:

Haavard Nord和Eirik Chambe-Eng(Qt的原始开发者和Trolltech的首席执行官兼总裁)于1991年开始开发"Qt"

同样来自维基百科,关于STL:

贝尔实验室的安德鲁·柯尼希(Andrew Koenig)没有意识到这项工作,并要求斯捷潘诺夫在1993年11月的ANSI/ISO C++标准化委员会会议上提出主要思想。委员会的反应是压倒性的,并导致Koenig要求在1994年3月的会议上及时提出正式提案。尽管时间压力巨大,Alex和Meng还是能够提出一份提案草案,并在会议上获得初步批准。

从男人自己:

"正如我经常说的,我认为不交付更大的标准库是我最大的错误。

Qt独立开发。 就这样过去了。 使用QMap,继续你的生活。 :)

(注:Qt中有一个无序图,叫QHash)

如果你想不出一些有用或有趣的东西放在值槽中,那么你的程序可能还不够复杂,不能大惊小怪。 关键对象中是否有数据成员,您可以轻松地在映射中生成值? 你真的想不出放在那里的东西吗?

如果您确实在每个条目中浪费了一个字符,那么这是您系统中真正的瓶颈吗? 你有指标证明这一点吗? 等等等等。