QMap :: insertMulti还是QMultiMap?

时间:2011-01-07 10:59:52

标签: c++ qt qmap qmultimap

我应该在QMap :: insertMulti和QMultiMap之间使用什么来处理:

2 - > ABC
2 - >高清
3 - > GHI
3 - > jkl

进入2个解决方案的区别是什么?

2 个答案:

答案 0 :(得分:7)

阅读Container Classes

QMap<Key, T>
This provides a dictionary (associative array) that maps keys of type Key to values of type T. Normally each key is associated with a single value. QMap stores its data in Key order; if order doesn't matter QHash is a faster alternative.

QMultiMap<Key, T>
This is a convenience subclass of QMap that provides a nice interface for multi-valued maps, i.e. maps where one key can be associated with multiple values.
看起来两者都可以完成这项工作。在本文档中还有Algorithmic Complexity部分,您可以看到这两个类具有相同的复杂性。

我会选择QMultiMap只是为了更好地记录我将使用相同的密钥保存多个值的事实。

答案 1 :(得分:5)

两者都可以达到这个目的。 QMultiMap实际上是QMap的子类。

如果您愿意为单个键设置多个值,则可以使用: QMap:用于插入使用insertMulti QMultiMap:用于插入使用insert

如果您愿意为单个键设置单个值,则可以使用: QMap:用于插入使用插入 QMultiMap:用于插入使用替换

你可以看到两者都可以同时服务。但是,每个都具有与其名称匹配的唯一默认行为。而且,每个都有一些便于单/多的方法或操作符。

最好根据您的需要选择类型。这是一个很好的做法。例如,如果您使用QMap存储单个键多个值,那么通过您的类成员的其他人可能会觉得您愿意保存单个键值对(来自数据类型) 类似地,如果您使用QMultiMap,任何阅读该定义的人都可以理解数据对于同一个键具有多个值。