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)
如果你想不出一些有用或有趣的东西放在值槽中,那么你的程序可能还不够复杂,不能大惊小怪。 关键对象中是否有数据成员,您可以轻松地在映射中生成值? 你真的想不出放在那里的东西吗?
如果您确实在每个条目中浪费了一个字符,那么这是您系统中真正的瓶颈吗? 你有指标证明这一点吗? 等等等等。