2

Qt offers a set of STL-like containers.

However, there is no container available, which stores ordered values by their order (like std::set) and QSet for some reasons behaves like std::unordered_set. I realize that probably O(1) lookups in the "set" data structure called might be a great thing, but I certainly cannot understand why this decision was made.

Which container should I use to store ordered item collections (I suspect that QMap with fictive values is a very poor choice) and why doesn't Qt offer something like std::set?

I guess there might be some technical reason behind this, but, unfortunately, I can't think of one.

4

1 回答 1

3

来自维基百科:

Haavard Nord 和 Eirik Chambe-Eng(Qt 的原始开发者和奇趣科技的首席执行官和总裁)于 1991 年开始开发“Qt”

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

贝尔实验室的 Andrew Koenig 没有意识到这项工作,并要求 Stepanov 在 1993 年 11 月的 ANSI/ISO C++ 标准化委员会会议上介绍主要思想。委员会的反应压倒性地赞成,并导致 Koenig 要求及时在 1994 年 3 月的会议上提出正式提案。尽管时间压力巨大,Alex 和 Meng 还是能够提出一份提案草案,并在那次会议上获得初步批准。

而从男人本人:

“正如我经常说的,我认为不发布更大的标准库是我最大的错误。” ——Bjarne Stroustrup

Qt独立开发。就这样。使用 QMap 并继续您的生活。:)

(注意:Qt 中有一个无序映射,叫做QHash

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

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

于 2012-04-20T21:20:13.383 回答