我应该在QMap :: insertMulti和QMultiMap之间使用什么来处理:
2 - > ABC
2 - >高清
3 - > GHI
3 - > jkl
进入2个解决方案的区别是什么?
答案 0 :(得分:7)
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,任何阅读该定义的人都可以理解数据对于同一个键具有多个值。